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

#ifndef USE_IFC4

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

#include <map>

using namespace Ifc2x3;
using namespace IfcParse;
using namespace IfcWrite;

// External definitions
extern entity* Ifc2DCompositeCurve_type;
extern entity* IfcActionRequest_type;
extern entity* IfcActor_type;
extern entity* IfcActorRole_type;
extern entity* IfcActuatorType_type;
extern entity* IfcAddress_type;
extern entity* IfcAirTerminalBoxType_type;
extern entity* IfcAirTerminalType_type;
extern entity* IfcAirToAirHeatRecoveryType_type;
extern entity* IfcAlarmType_type;
extern entity* IfcAngularDimension_type;
extern entity* IfcAnnotation_type;
extern entity* IfcAnnotationCurveOccurrence_type;
extern entity* IfcAnnotationFillArea_type;
extern entity* IfcAnnotationFillAreaOccurrence_type;
extern entity* IfcAnnotationOccurrence_type;
extern entity* IfcAnnotationSurface_type;
extern entity* IfcAnnotationSurfaceOccurrence_type;
extern entity* IfcAnnotationSymbolOccurrence_type;
extern entity* IfcAnnotationTextOccurrence_type;
extern entity* IfcApplication_type;
extern entity* IfcAppliedValue_type;
extern entity* IfcAppliedValueRelationship_type;
extern entity* IfcApproval_type;
extern entity* IfcApprovalActorRelationship_type;
extern entity* IfcApprovalPropertyRelationship_type;
extern entity* IfcApprovalRelationship_type;
extern entity* IfcArbitraryClosedProfileDef_type;
extern entity* IfcArbitraryOpenProfileDef_type;
extern entity* IfcArbitraryProfileDefWithVoids_type;
extern entity* IfcAsset_type;
extern entity* IfcAsymmetricIShapeProfileDef_type;
extern entity* IfcAxis1Placement_type;
extern entity* IfcAxis2Placement2D_type;
extern entity* IfcAxis2Placement3D_type;
extern entity* IfcBSplineCurve_type;
extern entity* IfcBeam_type;
extern entity* IfcBeamType_type;
extern entity* IfcBezierCurve_type;
extern entity* IfcBlobTexture_type;
extern entity* IfcBlock_type;
extern entity* IfcBoilerType_type;
extern entity* IfcBooleanClippingResult_type;
extern entity* IfcBooleanResult_type;
extern entity* IfcBoundaryCondition_type;
extern entity* IfcBoundaryEdgeCondition_type;
extern entity* IfcBoundaryFaceCondition_type;
extern entity* IfcBoundaryNodeCondition_type;
extern entity* IfcBoundaryNodeConditionWarping_type;
extern entity* IfcBoundedCurve_type;
extern entity* IfcBoundedSurface_type;
extern entity* IfcBoundingBox_type;
extern entity* IfcBoxedHalfSpace_type;
extern entity* IfcBuilding_type;
extern entity* IfcBuildingElement_type;
extern entity* IfcBuildingElementComponent_type;
extern entity* IfcBuildingElementPart_type;
extern entity* IfcBuildingElementProxy_type;
extern entity* IfcBuildingElementProxyType_type;
extern entity* IfcBuildingElementType_type;
extern entity* IfcBuildingStorey_type;
extern entity* IfcCShapeProfileDef_type;
extern entity* IfcCableCarrierFittingType_type;
extern entity* IfcCableCarrierSegmentType_type;
extern entity* IfcCableSegmentType_type;
extern entity* IfcCalendarDate_type;
extern entity* IfcCartesianPoint_type;
extern entity* IfcCartesianTransformationOperator_type;
extern entity* IfcCartesianTransformationOperator2D_type;
extern entity* IfcCartesianTransformationOperator2DnonUniform_type;
extern entity* IfcCartesianTransformationOperator3D_type;
extern entity* IfcCartesianTransformationOperator3DnonUniform_type;
extern entity* IfcCenterLineProfileDef_type;
extern entity* IfcChamferEdgeFeature_type;
extern entity* IfcChillerType_type;
extern entity* IfcCircle_type;
extern entity* IfcCircleHollowProfileDef_type;
extern entity* IfcCircleProfileDef_type;
extern entity* IfcClassification_type;
extern entity* IfcClassificationItem_type;
extern entity* IfcClassificationItemRelationship_type;
extern entity* IfcClassificationNotation_type;
extern entity* IfcClassificationNotationFacet_type;
extern entity* IfcClassificationReference_type;
extern entity* IfcClosedShell_type;
extern entity* IfcCoilType_type;
extern entity* IfcColourRgb_type;
extern entity* IfcColourSpecification_type;
extern entity* IfcColumn_type;
extern entity* IfcColumnType_type;
extern entity* IfcComplexProperty_type;
extern entity* IfcCompositeCurve_type;
extern entity* IfcCompositeCurveSegment_type;
extern entity* IfcCompositeProfileDef_type;
extern entity* IfcCompressorType_type;
extern entity* IfcCondenserType_type;
extern entity* IfcCondition_type;
extern entity* IfcConditionCriterion_type;
extern entity* IfcConic_type;
extern entity* IfcConnectedFaceSet_type;
extern entity* IfcConnectionCurveGeometry_type;
extern entity* IfcConnectionGeometry_type;
extern entity* IfcConnectionPointEccentricity_type;
extern entity* IfcConnectionPointGeometry_type;
extern entity* IfcConnectionPortGeometry_type;
extern entity* IfcConnectionSurfaceGeometry_type;
extern entity* IfcConstraint_type;
extern entity* IfcConstraintAggregationRelationship_type;
extern entity* IfcConstraintClassificationRelationship_type;
extern entity* IfcConstraintRelationship_type;
extern entity* IfcConstructionEquipmentResource_type;
extern entity* IfcConstructionMaterialResource_type;
extern entity* IfcConstructionProductResource_type;
extern entity* IfcConstructionResource_type;
extern entity* IfcContextDependentUnit_type;
extern entity* IfcControl_type;
extern entity* IfcControllerType_type;
extern entity* IfcConversionBasedUnit_type;
extern entity* IfcCooledBeamType_type;
extern entity* IfcCoolingTowerType_type;
extern entity* IfcCoordinatedUniversalTimeOffset_type;
extern entity* IfcCostItem_type;
extern entity* IfcCostSchedule_type;
extern entity* IfcCostValue_type;
extern entity* IfcCovering_type;
extern entity* IfcCoveringType_type;
extern entity* IfcCraneRailAShapeProfileDef_type;
extern entity* IfcCraneRailFShapeProfileDef_type;
extern entity* IfcCrewResource_type;
extern entity* IfcCsgPrimitive3D_type;
extern entity* IfcCsgSolid_type;
extern entity* IfcCurrencyRelationship_type;
extern entity* IfcCurtainWall_type;
extern entity* IfcCurtainWallType_type;
extern entity* IfcCurve_type;
extern entity* IfcCurveBoundedPlane_type;
extern entity* IfcCurveStyle_type;
extern entity* IfcCurveStyleFont_type;
extern entity* IfcCurveStyleFontAndScaling_type;
extern entity* IfcCurveStyleFontPattern_type;
extern entity* IfcDamperType_type;
extern entity* IfcDateAndTime_type;
extern entity* IfcDefinedSymbol_type;
extern entity* IfcDerivedProfileDef_type;
extern entity* IfcDerivedUnit_type;
extern entity* IfcDerivedUnitElement_type;
extern entity* IfcDiameterDimension_type;
extern entity* IfcDimensionCalloutRelationship_type;
extern entity* IfcDimensionCurve_type;
extern entity* IfcDimensionCurveDirectedCallout_type;
extern entity* IfcDimensionCurveTerminator_type;
extern entity* IfcDimensionPair_type;
extern entity* IfcDimensionalExponents_type;
extern entity* IfcDirection_type;
extern entity* IfcDiscreteAccessory_type;
extern entity* IfcDiscreteAccessoryType_type;
extern entity* IfcDistributionChamberElement_type;
extern entity* IfcDistributionChamberElementType_type;
extern entity* IfcDistributionControlElement_type;
extern entity* IfcDistributionControlElementType_type;
extern entity* IfcDistributionElement_type;
extern entity* IfcDistributionElementType_type;
extern entity* IfcDistributionFlowElement_type;
extern entity* IfcDistributionFlowElementType_type;
extern entity* IfcDistributionPort_type;
extern entity* IfcDocumentElectronicFormat_type;
extern entity* IfcDocumentInformation_type;
extern entity* IfcDocumentInformationRelationship_type;
extern entity* IfcDocumentReference_type;
extern entity* IfcDoor_type;
extern entity* IfcDoorLiningProperties_type;
extern entity* IfcDoorPanelProperties_type;
extern entity* IfcDoorStyle_type;
extern entity* IfcDraughtingCallout_type;
extern entity* IfcDraughtingCalloutRelationship_type;
extern entity* IfcDraughtingPreDefinedColour_type;
extern entity* IfcDraughtingPreDefinedCurveFont_type;
extern entity* IfcDraughtingPreDefinedTextFont_type;
extern entity* IfcDuctFittingType_type;
extern entity* IfcDuctSegmentType_type;
extern entity* IfcDuctSilencerType_type;
extern entity* IfcEdge_type;
extern entity* IfcEdgeCurve_type;
extern entity* IfcEdgeFeature_type;
extern entity* IfcEdgeLoop_type;
extern entity* IfcElectricApplianceType_type;
extern entity* IfcElectricDistributionPoint_type;
extern entity* IfcElectricFlowStorageDeviceType_type;
extern entity* IfcElectricGeneratorType_type;
extern entity* IfcElectricHeaterType_type;
extern entity* IfcElectricMotorType_type;
extern entity* IfcElectricTimeControlType_type;
extern entity* IfcElectricalBaseProperties_type;
extern entity* IfcElectricalCircuit_type;
extern entity* IfcElectricalElement_type;
extern entity* IfcElement_type;
extern entity* IfcElementAssembly_type;
extern entity* IfcElementComponent_type;
extern entity* IfcElementComponentType_type;
extern entity* IfcElementQuantity_type;
extern entity* IfcElementType_type;
extern entity* IfcElementarySurface_type;
extern entity* IfcEllipse_type;
extern entity* IfcEllipseProfileDef_type;
extern entity* IfcEnergyConversionDevice_type;
extern entity* IfcEnergyConversionDeviceType_type;
extern entity* IfcEnergyProperties_type;
extern entity* IfcEnvironmentalImpactValue_type;
extern entity* IfcEquipmentElement_type;
extern entity* IfcEquipmentStandard_type;
extern entity* IfcEvaporativeCoolerType_type;
extern entity* IfcEvaporatorType_type;
extern entity* IfcExtendedMaterialProperties_type;
extern entity* IfcExternalReference_type;
extern entity* IfcExternallyDefinedHatchStyle_type;
extern entity* IfcExternallyDefinedSurfaceStyle_type;
extern entity* IfcExternallyDefinedSymbol_type;
extern entity* IfcExternallyDefinedTextFont_type;
extern entity* IfcExtrudedAreaSolid_type;
extern entity* IfcFace_type;
extern entity* IfcFaceBasedSurfaceModel_type;
extern entity* IfcFaceBound_type;
extern entity* IfcFaceOuterBound_type;
extern entity* IfcFaceSurface_type;
extern entity* IfcFacetedBrep_type;
extern entity* IfcFacetedBrepWithVoids_type;
extern entity* IfcFailureConnectionCondition_type;
extern entity* IfcFanType_type;
extern entity* IfcFastener_type;
extern entity* IfcFastenerType_type;
extern entity* IfcFeatureElement_type;
extern entity* IfcFeatureElementAddition_type;
extern entity* IfcFeatureElementSubtraction_type;
extern entity* IfcFillAreaStyle_type;
extern entity* IfcFillAreaStyleHatching_type;
extern entity* IfcFillAreaStyleTileSymbolWithStyle_type;
extern entity* IfcFillAreaStyleTiles_type;
extern entity* IfcFilterType_type;
extern entity* IfcFireSuppressionTerminalType_type;
extern entity* IfcFlowController_type;
extern entity* IfcFlowControllerType_type;
extern entity* IfcFlowFitting_type;
extern entity* IfcFlowFittingType_type;
extern entity* IfcFlowInstrumentType_type;
extern entity* IfcFlowMeterType_type;
extern entity* IfcFlowMovingDevice_type;
extern entity* IfcFlowMovingDeviceType_type;
extern entity* IfcFlowSegment_type;
extern entity* IfcFlowSegmentType_type;
extern entity* IfcFlowStorageDevice_type;
extern entity* IfcFlowStorageDeviceType_type;
extern entity* IfcFlowTerminal_type;
extern entity* IfcFlowTerminalType_type;
extern entity* IfcFlowTreatmentDevice_type;
extern entity* IfcFlowTreatmentDeviceType_type;
extern entity* IfcFluidFlowProperties_type;
extern entity* IfcFooting_type;
extern entity* IfcFuelProperties_type;
extern entity* IfcFurnishingElement_type;
extern entity* IfcFurnishingElementType_type;
extern entity* IfcFurnitureStandard_type;
extern entity* IfcFurnitureType_type;
extern entity* IfcGasTerminalType_type;
extern entity* IfcGeneralMaterialProperties_type;
extern entity* IfcGeneralProfileProperties_type;
extern entity* IfcGeometricCurveSet_type;
extern entity* IfcGeometricRepresentationContext_type;
extern entity* IfcGeometricRepresentationItem_type;
extern entity* IfcGeometricRepresentationSubContext_type;
extern entity* IfcGeometricSet_type;
extern entity* IfcGrid_type;
extern entity* IfcGridAxis_type;
extern entity* IfcGridPlacement_type;
extern entity* IfcGroup_type;
extern entity* IfcHalfSpaceSolid_type;
extern entity* IfcHeatExchangerType_type;
extern entity* IfcHumidifierType_type;
extern entity* IfcHygroscopicMaterialProperties_type;
extern entity* IfcIShapeProfileDef_type;
extern entity* IfcImageTexture_type;
extern entity* IfcInventory_type;
extern entity* IfcIrregularTimeSeries_type;
extern entity* IfcIrregularTimeSeriesValue_type;
extern entity* IfcJunctionBoxType_type;
extern entity* IfcLShapeProfileDef_type;
extern entity* IfcLaborResource_type;
extern entity* IfcLampType_type;
extern entity* IfcLibraryInformation_type;
extern entity* IfcLibraryReference_type;
extern entity* IfcLightDistributionData_type;
extern entity* IfcLightFixtureType_type;
extern entity* IfcLightIntensityDistribution_type;
extern entity* IfcLightSource_type;
extern entity* IfcLightSourceAmbient_type;
extern entity* IfcLightSourceDirectional_type;
extern entity* IfcLightSourceGoniometric_type;
extern entity* IfcLightSourcePositional_type;
extern entity* IfcLightSourceSpot_type;
extern entity* IfcLine_type;
extern entity* IfcLinearDimension_type;
extern entity* IfcLocalPlacement_type;
extern entity* IfcLocalTime_type;
extern entity* IfcLoop_type;
extern entity* IfcManifoldSolidBrep_type;
extern entity* IfcMappedItem_type;
extern entity* IfcMaterial_type;
extern entity* IfcMaterialClassificationRelationship_type;
extern entity* IfcMaterialDefinitionRepresentation_type;
extern entity* IfcMaterialLayer_type;
extern entity* IfcMaterialLayerSet_type;
extern entity* IfcMaterialLayerSetUsage_type;
extern entity* IfcMaterialList_type;
extern entity* IfcMaterialProperties_type;
extern entity* IfcMeasureWithUnit_type;
extern entity* IfcMechanicalConcreteMaterialProperties_type;
extern entity* IfcMechanicalFastener_type;
extern entity* IfcMechanicalFastenerType_type;
extern entity* IfcMechanicalMaterialProperties_type;
extern entity* IfcMechanicalSteelMaterialProperties_type;
extern entity* IfcMember_type;
extern entity* IfcMemberType_type;
extern entity* IfcMetric_type;
extern entity* IfcMonetaryUnit_type;
extern entity* IfcMotorConnectionType_type;
extern entity* IfcMove_type;
extern entity* IfcNamedUnit_type;
extern entity* IfcObject_type;
extern entity* IfcObjectDefinition_type;
extern entity* IfcObjectPlacement_type;
extern entity* IfcObjective_type;
extern entity* IfcOccupant_type;
extern entity* IfcOffsetCurve2D_type;
extern entity* IfcOffsetCurve3D_type;
extern entity* IfcOneDirectionRepeatFactor_type;
extern entity* IfcOpenShell_type;
extern entity* IfcOpeningElement_type;
extern entity* IfcOpticalMaterialProperties_type;
extern entity* IfcOrderAction_type;
extern entity* IfcOrganization_type;
extern entity* IfcOrganizationRelationship_type;
extern entity* IfcOrientedEdge_type;
extern entity* IfcOutletType_type;
extern entity* IfcOwnerHistory_type;
extern entity* IfcParameterizedProfileDef_type;
extern entity* IfcPath_type;
extern entity* IfcPerformanceHistory_type;
extern entity* IfcPermeableCoveringProperties_type;
extern entity* IfcPermit_type;
extern entity* IfcPerson_type;
extern entity* IfcPersonAndOrganization_type;
extern entity* IfcPhysicalComplexQuantity_type;
extern entity* IfcPhysicalQuantity_type;
extern entity* IfcPhysicalSimpleQuantity_type;
extern entity* IfcPile_type;
extern entity* IfcPipeFittingType_type;
extern entity* IfcPipeSegmentType_type;
extern entity* IfcPixelTexture_type;
extern entity* IfcPlacement_type;
extern entity* IfcPlanarBox_type;
extern entity* IfcPlanarExtent_type;
extern entity* IfcPlane_type;
extern entity* IfcPlate_type;
extern entity* IfcPlateType_type;
extern entity* IfcPoint_type;
extern entity* IfcPointOnCurve_type;
extern entity* IfcPointOnSurface_type;
extern entity* IfcPolyLoop_type;
extern entity* IfcPolygonalBoundedHalfSpace_type;
extern entity* IfcPolyline_type;
extern entity* IfcPort_type;
extern entity* IfcPostalAddress_type;
extern entity* IfcPreDefinedColour_type;
extern entity* IfcPreDefinedCurveFont_type;
extern entity* IfcPreDefinedDimensionSymbol_type;
extern entity* IfcPreDefinedItem_type;
extern entity* IfcPreDefinedPointMarkerSymbol_type;
extern entity* IfcPreDefinedSymbol_type;
extern entity* IfcPreDefinedTerminatorSymbol_type;
extern entity* IfcPreDefinedTextFont_type;
extern entity* IfcPresentationLayerAssignment_type;
extern entity* IfcPresentationLayerWithStyle_type;
extern entity* IfcPresentationStyle_type;
extern entity* IfcPresentationStyleAssignment_type;
extern entity* IfcProcedure_type;
extern entity* IfcProcess_type;
extern entity* IfcProduct_type;
extern entity* IfcProductDefinitionShape_type;
extern entity* IfcProductRepresentation_type;
extern entity* IfcProductsOfCombustionProperties_type;
extern entity* IfcProfileDef_type;
extern entity* IfcProfileProperties_type;
extern entity* IfcProject_type;
extern entity* IfcProjectOrder_type;
extern entity* IfcProjectOrderRecord_type;
extern entity* IfcProjectionCurve_type;
extern entity* IfcProjectionElement_type;
extern entity* IfcProperty_type;
extern entity* IfcPropertyBoundedValue_type;
extern entity* IfcPropertyConstraintRelationship_type;
extern entity* IfcPropertyDefinition_type;
extern entity* IfcPropertyDependencyRelationship_type;
extern entity* IfcPropertyEnumeratedValue_type;
extern entity* IfcPropertyEnumeration_type;
extern entity* IfcPropertyListValue_type;
extern entity* IfcPropertyReferenceValue_type;
extern entity* IfcPropertySet_type;
extern entity* IfcPropertySetDefinition_type;
extern entity* IfcPropertySingleValue_type;
extern entity* IfcPropertyTableValue_type;
extern entity* IfcProtectiveDeviceType_type;
extern entity* IfcProxy_type;
extern entity* IfcPumpType_type;
extern entity* IfcQuantityArea_type;
extern entity* IfcQuantityCount_type;
extern entity* IfcQuantityLength_type;
extern entity* IfcQuantityTime_type;
extern entity* IfcQuantityVolume_type;
extern entity* IfcQuantityWeight_type;
extern entity* IfcRadiusDimension_type;
extern entity* IfcRailing_type;
extern entity* IfcRailingType_type;
extern entity* IfcRamp_type;
extern entity* IfcRampFlight_type;
extern entity* IfcRampFlightType_type;
extern entity* IfcRationalBezierCurve_type;
extern entity* IfcRectangleHollowProfileDef_type;
extern entity* IfcRectangleProfileDef_type;
extern entity* IfcRectangularPyramid_type;
extern entity* IfcRectangularTrimmedSurface_type;
extern entity* IfcReferencesValueDocument_type;
extern entity* IfcRegularTimeSeries_type;
extern entity* IfcReinforcementBarProperties_type;
extern entity* IfcReinforcementDefinitionProperties_type;
extern entity* IfcReinforcingBar_type;
extern entity* IfcReinforcingElement_type;
extern entity* IfcReinforcingMesh_type;
extern entity* IfcRelAggregates_type;
extern entity* IfcRelAssigns_type;
extern entity* IfcRelAssignsTasks_type;
extern entity* IfcRelAssignsToActor_type;
extern entity* IfcRelAssignsToControl_type;
extern entity* IfcRelAssignsToGroup_type;
extern entity* IfcRelAssignsToProcess_type;
extern entity* IfcRelAssignsToProduct_type;
extern entity* IfcRelAssignsToProjectOrder_type;
extern entity* IfcRelAssignsToResource_type;
extern entity* IfcRelAssociates_type;
extern entity* IfcRelAssociatesAppliedValue_type;
extern entity* IfcRelAssociatesApproval_type;
extern entity* IfcRelAssociatesClassification_type;
extern entity* IfcRelAssociatesConstraint_type;
extern entity* IfcRelAssociatesDocument_type;
extern entity* IfcRelAssociatesLibrary_type;
extern entity* IfcRelAssociatesMaterial_type;
extern entity* IfcRelAssociatesProfileProperties_type;
extern entity* IfcRelConnects_type;
extern entity* IfcRelConnectsElements_type;
extern entity* IfcRelConnectsPathElements_type;
extern entity* IfcRelConnectsPortToElement_type;
extern entity* IfcRelConnectsPorts_type;
extern entity* IfcRelConnectsStructuralActivity_type;
extern entity* IfcRelConnectsStructuralElement_type;
extern entity* IfcRelConnectsStructuralMember_type;
extern entity* IfcRelConnectsWithEccentricity_type;
extern entity* IfcRelConnectsWithRealizingElements_type;
extern entity* IfcRelContainedInSpatialStructure_type;
extern entity* IfcRelCoversBldgElements_type;
extern entity* IfcRelCoversSpaces_type;
extern entity* IfcRelDecomposes_type;
extern entity* IfcRelDefines_type;
extern entity* IfcRelDefinesByProperties_type;
extern entity* IfcRelDefinesByType_type;
extern entity* IfcRelFillsElement_type;
extern entity* IfcRelFlowControlElements_type;
extern entity* IfcRelInteractionRequirements_type;
extern entity* IfcRelNests_type;
extern entity* IfcRelOccupiesSpaces_type;
extern entity* IfcRelOverridesProperties_type;
extern entity* IfcRelProjectsElement_type;
extern entity* IfcRelReferencedInSpatialStructure_type;
extern entity* IfcRelSchedulesCostItems_type;
extern entity* IfcRelSequence_type;
extern entity* IfcRelServicesBuildings_type;
extern entity* IfcRelSpaceBoundary_type;
extern entity* IfcRelVoidsElement_type;
extern entity* IfcRelationship_type;
extern entity* IfcRelaxation_type;
extern entity* IfcRepresentation_type;
extern entity* IfcRepresentationContext_type;
extern entity* IfcRepresentationItem_type;
extern entity* IfcRepresentationMap_type;
extern entity* IfcResource_type;
extern entity* IfcRevolvedAreaSolid_type;
extern entity* IfcRibPlateProfileProperties_type;
extern entity* IfcRightCircularCone_type;
extern entity* IfcRightCircularCylinder_type;
extern entity* IfcRoof_type;
extern entity* IfcRoot_type;
extern entity* IfcRoundedEdgeFeature_type;
extern entity* IfcRoundedRectangleProfileDef_type;
extern entity* IfcSIUnit_type;
extern entity* IfcSanitaryTerminalType_type;
extern entity* IfcScheduleTimeControl_type;
extern entity* IfcSectionProperties_type;
extern entity* IfcSectionReinforcementProperties_type;
extern entity* IfcSectionedSpine_type;
extern entity* IfcSensorType_type;
extern entity* IfcServiceLife_type;
extern entity* IfcServiceLifeFactor_type;
extern entity* IfcShapeAspect_type;
extern entity* IfcShapeModel_type;
extern entity* IfcShapeRepresentation_type;
extern entity* IfcShellBasedSurfaceModel_type;
extern entity* IfcSimpleProperty_type;
extern entity* IfcSite_type;
extern entity* IfcSlab_type;
extern entity* IfcSlabType_type;
extern entity* IfcSlippageConnectionCondition_type;
extern entity* IfcSolidModel_type;
extern entity* IfcSoundProperties_type;
extern entity* IfcSoundValue_type;
extern entity* IfcSpace_type;
extern entity* IfcSpaceHeaterType_type;
extern entity* IfcSpaceProgram_type;
extern entity* IfcSpaceThermalLoadProperties_type;
extern entity* IfcSpaceType_type;
extern entity* IfcSpatialStructureElement_type;
extern entity* IfcSpatialStructureElementType_type;
extern entity* IfcSphere_type;
extern entity* IfcStackTerminalType_type;
extern entity* IfcStair_type;
extern entity* IfcStairFlight_type;
extern entity* IfcStairFlightType_type;
extern entity* IfcStructuralAction_type;
extern entity* IfcStructuralActivity_type;
extern entity* IfcStructuralAnalysisModel_type;
extern entity* IfcStructuralConnection_type;
extern entity* IfcStructuralConnectionCondition_type;
extern entity* IfcStructuralCurveConnection_type;
extern entity* IfcStructuralCurveMember_type;
extern entity* IfcStructuralCurveMemberVarying_type;
extern entity* IfcStructuralItem_type;
extern entity* IfcStructuralLinearAction_type;
extern entity* IfcStructuralLinearActionVarying_type;
extern entity* IfcStructuralLoad_type;
extern entity* IfcStructuralLoadGroup_type;
extern entity* IfcStructuralLoadLinearForce_type;
extern entity* IfcStructuralLoadPlanarForce_type;
extern entity* IfcStructuralLoadSingleDisplacement_type;
extern entity* IfcStructuralLoadSingleDisplacementDistortion_type;
extern entity* IfcStructuralLoadSingleForce_type;
extern entity* IfcStructuralLoadSingleForceWarping_type;
extern entity* IfcStructuralLoadStatic_type;
extern entity* IfcStructuralLoadTemperature_type;
extern entity* IfcStructuralMember_type;
extern entity* IfcStructuralPlanarAction_type;
extern entity* IfcStructuralPlanarActionVarying_type;
extern entity* IfcStructuralPointAction_type;
extern entity* IfcStructuralPointConnection_type;
extern entity* IfcStructuralPointReaction_type;
extern entity* IfcStructuralProfileProperties_type;
extern entity* IfcStructuralReaction_type;
extern entity* IfcStructuralResultGroup_type;
extern entity* IfcStructuralSteelProfileProperties_type;
extern entity* IfcStructuralSurfaceConnection_type;
extern entity* IfcStructuralSurfaceMember_type;
extern entity* IfcStructuralSurfaceMemberVarying_type;
extern entity* IfcStructuredDimensionCallout_type;
extern entity* IfcStyleModel_type;
extern entity* IfcStyledItem_type;
extern entity* IfcStyledRepresentation_type;
extern entity* IfcSubContractResource_type;
extern entity* IfcSubedge_type;
extern entity* IfcSurface_type;
extern entity* IfcSurfaceCurveSweptAreaSolid_type;
extern entity* IfcSurfaceOfLinearExtrusion_type;
extern entity* IfcSurfaceOfRevolution_type;
extern entity* IfcSurfaceStyle_type;
extern entity* IfcSurfaceStyleLighting_type;
extern entity* IfcSurfaceStyleRefraction_type;
extern entity* IfcSurfaceStyleRendering_type;
extern entity* IfcSurfaceStyleShading_type;
extern entity* IfcSurfaceStyleWithTextures_type;
extern entity* IfcSurfaceTexture_type;
extern entity* IfcSweptAreaSolid_type;
extern entity* IfcSweptDiskSolid_type;
extern entity* IfcSweptSurface_type;
extern entity* IfcSwitchingDeviceType_type;
extern entity* IfcSymbolStyle_type;
extern entity* IfcSystem_type;
extern entity* IfcSystemFurnitureElementType_type;
extern entity* IfcTShapeProfileDef_type;
extern entity* IfcTable_type;
extern entity* IfcTableRow_type;
extern entity* IfcTankType_type;
extern entity* IfcTask_type;
extern entity* IfcTelecomAddress_type;
extern entity* IfcTendon_type;
extern entity* IfcTendonAnchor_type;
extern entity* IfcTerminatorSymbol_type;
extern entity* IfcTextLiteral_type;
extern entity* IfcTextLiteralWithExtent_type;
extern entity* IfcTextStyle_type;
extern entity* IfcTextStyleFontModel_type;
extern entity* IfcTextStyleForDefinedFont_type;
extern entity* IfcTextStyleTextModel_type;
extern entity* IfcTextStyleWithBoxCharacteristics_type;
extern entity* IfcTextureCoordinate_type;
extern entity* IfcTextureCoordinateGenerator_type;
extern entity* IfcTextureMap_type;
extern entity* IfcTextureVertex_type;
extern entity* IfcThermalMaterialProperties_type;
extern entity* IfcTimeSeries_type;
extern entity* IfcTimeSeriesReferenceRelationship_type;
extern entity* IfcTimeSeriesSchedule_type;
extern entity* IfcTimeSeriesValue_type;
extern entity* IfcTopologicalRepresentationItem_type;
extern entity* IfcTopologyRepresentation_type;
extern entity* IfcTransformerType_type;
extern entity* IfcTransportElement_type;
extern entity* IfcTransportElementType_type;
extern entity* IfcTrapeziumProfileDef_type;
extern entity* IfcTrimmedCurve_type;
extern entity* IfcTubeBundleType_type;
extern entity* IfcTwoDirectionRepeatFactor_type;
extern entity* IfcTypeObject_type;
extern entity* IfcTypeProduct_type;
extern entity* IfcUShapeProfileDef_type;
extern entity* IfcUnitAssignment_type;
extern entity* IfcUnitaryEquipmentType_type;
extern entity* IfcValveType_type;
extern entity* IfcVector_type;
extern entity* IfcVertex_type;
extern entity* IfcVertexBasedTextureMap_type;
extern entity* IfcVertexLoop_type;
extern entity* IfcVertexPoint_type;
extern entity* IfcVibrationIsolatorType_type;
extern entity* IfcVirtualElement_type;
extern entity* IfcVirtualGridIntersection_type;
extern entity* IfcWall_type;
extern entity* IfcWallStandardCase_type;
extern entity* IfcWallType_type;
extern entity* IfcWasteTerminalType_type;
extern entity* IfcWaterProperties_type;
extern entity* IfcWindow_type;
extern entity* IfcWindowLiningProperties_type;
extern entity* IfcWindowPanelProperties_type;
extern entity* IfcWindowStyle_type;
extern entity* IfcWorkControl_type;
extern entity* IfcWorkPlan_type;
extern entity* IfcWorkSchedule_type;
extern entity* IfcZShapeProfileDef_type;
extern entity* IfcZone_type;
extern type_declaration* IfcAbsorbedDoseMeasure_type;
extern type_declaration* IfcAccelerationMeasure_type;
extern type_declaration* IfcAmountOfSubstanceMeasure_type;
extern type_declaration* IfcAngularVelocityMeasure_type;
extern type_declaration* IfcAreaMeasure_type;
extern type_declaration* IfcBoolean_type;
extern type_declaration* IfcBoxAlignment_type;
extern type_declaration* IfcComplexNumber_type;
extern type_declaration* IfcCompoundPlaneAngleMeasure_type;
extern type_declaration* IfcContextDependentMeasure_type;
extern type_declaration* IfcCountMeasure_type;
extern type_declaration* IfcCurvatureMeasure_type;
extern type_declaration* IfcDayInMonthNumber_type;
extern type_declaration* IfcDaylightSavingHour_type;
extern type_declaration* IfcDescriptiveMeasure_type;
extern type_declaration* IfcDimensionCount_type;
extern type_declaration* IfcDoseEquivalentMeasure_type;
extern type_declaration* IfcDynamicViscosityMeasure_type;
extern type_declaration* IfcElectricCapacitanceMeasure_type;
extern type_declaration* IfcElectricChargeMeasure_type;
extern type_declaration* IfcElectricConductanceMeasure_type;
extern type_declaration* IfcElectricCurrentMeasure_type;
extern type_declaration* IfcElectricResistanceMeasure_type;
extern type_declaration* IfcElectricVoltageMeasure_type;
extern type_declaration* IfcEnergyMeasure_type;
extern type_declaration* IfcFontStyle_type;
extern type_declaration* IfcFontVariant_type;
extern type_declaration* IfcFontWeight_type;
extern type_declaration* IfcForceMeasure_type;
extern type_declaration* IfcFrequencyMeasure_type;
extern type_declaration* IfcGloballyUniqueId_type;
extern type_declaration* IfcHeatFluxDensityMeasure_type;
extern type_declaration* IfcHeatingValueMeasure_type;
extern type_declaration* IfcHourInDay_type;
extern type_declaration* IfcIdentifier_type;
extern type_declaration* IfcIlluminanceMeasure_type;
extern type_declaration* IfcInductanceMeasure_type;
extern type_declaration* IfcInteger_type;
extern type_declaration* IfcIntegerCountRateMeasure_type;
extern type_declaration* IfcIonConcentrationMeasure_type;
extern type_declaration* IfcIsothermalMoistureCapacityMeasure_type;
extern type_declaration* IfcKinematicViscosityMeasure_type;
extern type_declaration* IfcLabel_type;
extern type_declaration* IfcLengthMeasure_type;
extern type_declaration* IfcLinearForceMeasure_type;
extern type_declaration* IfcLinearMomentMeasure_type;
extern type_declaration* IfcLinearStiffnessMeasure_type;
extern type_declaration* IfcLinearVelocityMeasure_type;
extern type_declaration* IfcLogical_type;
extern type_declaration* IfcLuminousFluxMeasure_type;
extern type_declaration* IfcLuminousIntensityDistributionMeasure_type;
extern type_declaration* IfcLuminousIntensityMeasure_type;
extern type_declaration* IfcMagneticFluxDensityMeasure_type;
extern type_declaration* IfcMagneticFluxMeasure_type;
extern type_declaration* IfcMassDensityMeasure_type;
extern type_declaration* IfcMassFlowRateMeasure_type;
extern type_declaration* IfcMassMeasure_type;
extern type_declaration* IfcMassPerLengthMeasure_type;
extern type_declaration* IfcMinuteInHour_type;
extern type_declaration* IfcModulusOfElasticityMeasure_type;
extern type_declaration* IfcModulusOfLinearSubgradeReactionMeasure_type;
extern type_declaration* IfcModulusOfRotationalSubgradeReactionMeasure_type;
extern type_declaration* IfcModulusOfSubgradeReactionMeasure_type;
extern type_declaration* IfcMoistureDiffusivityMeasure_type;
extern type_declaration* IfcMolecularWeightMeasure_type;
extern type_declaration* IfcMomentOfInertiaMeasure_type;
extern type_declaration* IfcMonetaryMeasure_type;
extern type_declaration* IfcMonthInYearNumber_type;
extern type_declaration* IfcNormalisedRatioMeasure_type;
extern type_declaration* IfcNumericMeasure_type;
extern type_declaration* IfcPHMeasure_type;
extern type_declaration* IfcParameterValue_type;
extern type_declaration* IfcPlanarForceMeasure_type;
extern type_declaration* IfcPlaneAngleMeasure_type;
extern type_declaration* IfcPositiveLengthMeasure_type;
extern type_declaration* IfcPositivePlaneAngleMeasure_type;
extern type_declaration* IfcPositiveRatioMeasure_type;
extern type_declaration* IfcPowerMeasure_type;
extern type_declaration* IfcPresentableText_type;
extern type_declaration* IfcPressureMeasure_type;
extern type_declaration* IfcRadioActivityMeasure_type;
extern type_declaration* IfcRatioMeasure_type;
extern type_declaration* IfcReal_type;
extern type_declaration* IfcRotationalFrequencyMeasure_type;
extern type_declaration* IfcRotationalMassMeasure_type;
extern type_declaration* IfcRotationalStiffnessMeasure_type;
extern type_declaration* IfcSecondInMinute_type;
extern type_declaration* IfcSectionModulusMeasure_type;
extern type_declaration* IfcSectionalAreaIntegralMeasure_type;
extern type_declaration* IfcShearModulusMeasure_type;
extern type_declaration* IfcSolidAngleMeasure_type;
extern type_declaration* IfcSoundPowerMeasure_type;
extern type_declaration* IfcSoundPressureMeasure_type;
extern type_declaration* IfcSpecificHeatCapacityMeasure_type;
extern type_declaration* IfcSpecularExponent_type;
extern type_declaration* IfcSpecularRoughness_type;
extern type_declaration* IfcTemperatureGradientMeasure_type;
extern type_declaration* IfcText_type;
extern type_declaration* IfcTextAlignment_type;
extern type_declaration* IfcTextDecoration_type;
extern type_declaration* IfcTextFontName_type;
extern type_declaration* IfcTextTransformation_type;
extern type_declaration* IfcThermalAdmittanceMeasure_type;
extern type_declaration* IfcThermalConductivityMeasure_type;
extern type_declaration* IfcThermalExpansionCoefficientMeasure_type;
extern type_declaration* IfcThermalResistanceMeasure_type;
extern type_declaration* IfcThermalTransmittanceMeasure_type;
extern type_declaration* IfcThermodynamicTemperatureMeasure_type;
extern type_declaration* IfcTimeMeasure_type;
extern type_declaration* IfcTimeStamp_type;
extern type_declaration* IfcTorqueMeasure_type;
extern type_declaration* IfcVaporPermeabilityMeasure_type;
extern type_declaration* IfcVolumeMeasure_type;
extern type_declaration* IfcVolumetricFlowRateMeasure_type;
extern type_declaration* IfcWarpingConstantMeasure_type;
extern type_declaration* IfcWarpingMomentMeasure_type;
extern type_declaration* IfcYearNumber_type;

IfcUtil::IfcBaseClass* Ifc2x3::SchemaEntity(IfcAbstractEntity* e) {
    switch(e->type()) {
        case Type::IfcAbsorbedDoseMeasure: return new IfcAbsorbedDoseMeasure(e); break;
        case Type::IfcAccelerationMeasure: return new IfcAccelerationMeasure(e); break;
        case Type::IfcAmountOfSubstanceMeasure: return new IfcAmountOfSubstanceMeasure(e); break;
        case Type::IfcAngularVelocityMeasure: return new IfcAngularVelocityMeasure(e); break;
        case Type::IfcAreaMeasure: return new IfcAreaMeasure(e); break;
        case Type::IfcBoolean: return new IfcBoolean(e); break;
        case Type::IfcBoxAlignment: return new IfcBoxAlignment(e); break;
        case Type::IfcComplexNumber: return new IfcComplexNumber(e); break;
        case Type::IfcCompoundPlaneAngleMeasure: return new IfcCompoundPlaneAngleMeasure(e); break;
        case Type::IfcContextDependentMeasure: return new IfcContextDependentMeasure(e); break;
        case Type::IfcCountMeasure: return new IfcCountMeasure(e); break;
        case Type::IfcCurvatureMeasure: return new IfcCurvatureMeasure(e); break;
        case Type::IfcDayInMonthNumber: return new IfcDayInMonthNumber(e); break;
        case Type::IfcDaylightSavingHour: return new IfcDaylightSavingHour(e); break;
        case Type::IfcDescriptiveMeasure: return new IfcDescriptiveMeasure(e); break;
        case Type::IfcDimensionCount: return new IfcDimensionCount(e); break;
        case Type::IfcDoseEquivalentMeasure: return new IfcDoseEquivalentMeasure(e); break;
        case Type::IfcDynamicViscosityMeasure: return new IfcDynamicViscosityMeasure(e); break;
        case Type::IfcElectricCapacitanceMeasure: return new IfcElectricCapacitanceMeasure(e); break;
        case Type::IfcElectricChargeMeasure: return new IfcElectricChargeMeasure(e); break;
        case Type::IfcElectricConductanceMeasure: return new IfcElectricConductanceMeasure(e); break;
        case Type::IfcElectricCurrentMeasure: return new IfcElectricCurrentMeasure(e); break;
        case Type::IfcElectricResistanceMeasure: return new IfcElectricResistanceMeasure(e); break;
        case Type::IfcElectricVoltageMeasure: return new IfcElectricVoltageMeasure(e); break;
        case Type::IfcEnergyMeasure: return new IfcEnergyMeasure(e); break;
        case Type::IfcFontStyle: return new IfcFontStyle(e); break;
        case Type::IfcFontVariant: return new IfcFontVariant(e); break;
        case Type::IfcFontWeight: return new IfcFontWeight(e); break;
        case Type::IfcForceMeasure: return new IfcForceMeasure(e); break;
        case Type::IfcFrequencyMeasure: return new IfcFrequencyMeasure(e); break;
        case Type::IfcGloballyUniqueId: return new IfcGloballyUniqueId(e); break;
        case Type::IfcHeatFluxDensityMeasure: return new IfcHeatFluxDensityMeasure(e); break;
        case Type::IfcHeatingValueMeasure: return new IfcHeatingValueMeasure(e); break;
        case Type::IfcHourInDay: return new IfcHourInDay(e); break;
        case Type::IfcIdentifier: return new IfcIdentifier(e); break;
        case Type::IfcIlluminanceMeasure: return new IfcIlluminanceMeasure(e); break;
        case Type::IfcInductanceMeasure: return new IfcInductanceMeasure(e); break;
        case Type::IfcInteger: return new IfcInteger(e); break;
        case Type::IfcIntegerCountRateMeasure: return new IfcIntegerCountRateMeasure(e); break;
        case Type::IfcIonConcentrationMeasure: return new IfcIonConcentrationMeasure(e); break;
        case Type::IfcIsothermalMoistureCapacityMeasure: return new IfcIsothermalMoistureCapacityMeasure(e); break;
        case Type::IfcKinematicViscosityMeasure: return new IfcKinematicViscosityMeasure(e); break;
        case Type::IfcLabel: return new IfcLabel(e); break;
        case Type::IfcLengthMeasure: return new IfcLengthMeasure(e); break;
        case Type::IfcLinearForceMeasure: return new IfcLinearForceMeasure(e); break;
        case Type::IfcLinearMomentMeasure: return new IfcLinearMomentMeasure(e); break;
        case Type::IfcLinearStiffnessMeasure: return new IfcLinearStiffnessMeasure(e); break;
        case Type::IfcLinearVelocityMeasure: return new IfcLinearVelocityMeasure(e); break;
        case Type::IfcLogical: return new IfcLogical(e); break;
        case Type::IfcLuminousFluxMeasure: return new IfcLuminousFluxMeasure(e); break;
        case Type::IfcLuminousIntensityDistributionMeasure: return new IfcLuminousIntensityDistributionMeasure(e); break;
        case Type::IfcLuminousIntensityMeasure: return new IfcLuminousIntensityMeasure(e); break;
        case Type::IfcMagneticFluxDensityMeasure: return new IfcMagneticFluxDensityMeasure(e); break;
        case Type::IfcMagneticFluxMeasure: return new IfcMagneticFluxMeasure(e); break;
        case Type::IfcMassDensityMeasure: return new IfcMassDensityMeasure(e); break;
        case Type::IfcMassFlowRateMeasure: return new IfcMassFlowRateMeasure(e); break;
        case Type::IfcMassMeasure: return new IfcMassMeasure(e); break;
        case Type::IfcMassPerLengthMeasure: return new IfcMassPerLengthMeasure(e); break;
        case Type::IfcMinuteInHour: return new IfcMinuteInHour(e); break;
        case Type::IfcModulusOfElasticityMeasure: return new IfcModulusOfElasticityMeasure(e); break;
        case Type::IfcModulusOfLinearSubgradeReactionMeasure: return new IfcModulusOfLinearSubgradeReactionMeasure(e); break;
        case Type::IfcModulusOfRotationalSubgradeReactionMeasure: return new IfcModulusOfRotationalSubgradeReactionMeasure(e); break;
        case Type::IfcModulusOfSubgradeReactionMeasure: return new IfcModulusOfSubgradeReactionMeasure(e); break;
        case Type::IfcMoistureDiffusivityMeasure: return new IfcMoistureDiffusivityMeasure(e); break;
        case Type::IfcMolecularWeightMeasure: return new IfcMolecularWeightMeasure(e); break;
        case Type::IfcMomentOfInertiaMeasure: return new IfcMomentOfInertiaMeasure(e); break;
        case Type::IfcMonetaryMeasure: return new IfcMonetaryMeasure(e); break;
        case Type::IfcMonthInYearNumber: return new IfcMonthInYearNumber(e); break;
        case Type::IfcNormalisedRatioMeasure: return new IfcNormalisedRatioMeasure(e); break;
        case Type::IfcNumericMeasure: return new IfcNumericMeasure(e); break;
        case Type::IfcPHMeasure: return new IfcPHMeasure(e); break;
        case Type::IfcParameterValue: return new IfcParameterValue(e); break;
        case Type::IfcPlanarForceMeasure: return new IfcPlanarForceMeasure(e); break;
        case Type::IfcPlaneAngleMeasure: return new IfcPlaneAngleMeasure(e); break;
        case Type::IfcPositiveLengthMeasure: return new IfcPositiveLengthMeasure(e); break;
        case Type::IfcPositivePlaneAngleMeasure: return new IfcPositivePlaneAngleMeasure(e); break;
        case Type::IfcPositiveRatioMeasure: return new IfcPositiveRatioMeasure(e); break;
        case Type::IfcPowerMeasure: return new IfcPowerMeasure(e); break;
        case Type::IfcPresentableText: return new IfcPresentableText(e); break;
        case Type::IfcPressureMeasure: return new IfcPressureMeasure(e); break;
        case Type::IfcRadioActivityMeasure: return new IfcRadioActivityMeasure(e); break;
        case Type::IfcRatioMeasure: return new IfcRatioMeasure(e); break;
        case Type::IfcReal: return new IfcReal(e); break;
        case Type::IfcRotationalFrequencyMeasure: return new IfcRotationalFrequencyMeasure(e); break;
        case Type::IfcRotationalMassMeasure: return new IfcRotationalMassMeasure(e); break;
        case Type::IfcRotationalStiffnessMeasure: return new IfcRotationalStiffnessMeasure(e); break;
        case Type::IfcSecondInMinute: return new IfcSecondInMinute(e); break;
        case Type::IfcSectionModulusMeasure: return new IfcSectionModulusMeasure(e); break;
        case Type::IfcSectionalAreaIntegralMeasure: return new IfcSectionalAreaIntegralMeasure(e); break;
        case Type::IfcShearModulusMeasure: return new IfcShearModulusMeasure(e); break;
        case Type::IfcSolidAngleMeasure: return new IfcSolidAngleMeasure(e); break;
        case Type::IfcSoundPowerMeasure: return new IfcSoundPowerMeasure(e); break;
        case Type::IfcSoundPressureMeasure: return new IfcSoundPressureMeasure(e); break;
        case Type::IfcSpecificHeatCapacityMeasure: return new IfcSpecificHeatCapacityMeasure(e); break;
        case Type::IfcSpecularExponent: return new IfcSpecularExponent(e); break;
        case Type::IfcSpecularRoughness: return new IfcSpecularRoughness(e); break;
        case Type::IfcTemperatureGradientMeasure: return new IfcTemperatureGradientMeasure(e); break;
        case Type::IfcText: return new IfcText(e); break;
        case Type::IfcTextAlignment: return new IfcTextAlignment(e); break;
        case Type::IfcTextDecoration: return new IfcTextDecoration(e); break;
        case Type::IfcTextFontName: return new IfcTextFontName(e); break;
        case Type::IfcTextTransformation: return new IfcTextTransformation(e); break;
        case Type::IfcThermalAdmittanceMeasure: return new IfcThermalAdmittanceMeasure(e); break;
        case Type::IfcThermalConductivityMeasure: return new IfcThermalConductivityMeasure(e); break;
        case Type::IfcThermalExpansionCoefficientMeasure: return new IfcThermalExpansionCoefficientMeasure(e); break;
        case Type::IfcThermalResistanceMeasure: return new IfcThermalResistanceMeasure(e); break;
        case Type::IfcThermalTransmittanceMeasure: return new IfcThermalTransmittanceMeasure(e); break;
        case Type::IfcThermodynamicTemperatureMeasure: return new IfcThermodynamicTemperatureMeasure(e); break;
        case Type::IfcTimeMeasure: return new IfcTimeMeasure(e); break;
        case Type::IfcTimeStamp: return new IfcTimeStamp(e); break;
        case Type::IfcTorqueMeasure: return new IfcTorqueMeasure(e); break;
        case Type::IfcVaporPermeabilityMeasure: return new IfcVaporPermeabilityMeasure(e); break;
        case Type::IfcVolumeMeasure: return new IfcVolumeMeasure(e); break;
        case Type::IfcVolumetricFlowRateMeasure: return new IfcVolumetricFlowRateMeasure(e); break;
        case Type::IfcWarpingConstantMeasure: return new IfcWarpingConstantMeasure(e); break;
        case Type::IfcWarpingMomentMeasure: return new IfcWarpingMomentMeasure(e); break;
        case Type::IfcYearNumber: return new IfcYearNumber(e); break;
        case Type::Ifc2DCompositeCurve: return new Ifc2DCompositeCurve(e); break;
        case Type::IfcActionRequest: return new IfcActionRequest(e); break;
        case Type::IfcActor: return new IfcActor(e); break;
        case Type::IfcActorRole: return new IfcActorRole(e); break;
        case Type::IfcActuatorType: return new IfcActuatorType(e); break;
        case Type::IfcAddress: return new IfcAddress(e); break;
        case Type::IfcAirTerminalBoxType: return new IfcAirTerminalBoxType(e); break;
        case Type::IfcAirTerminalType: return new IfcAirTerminalType(e); break;
        case Type::IfcAirToAirHeatRecoveryType: return new IfcAirToAirHeatRecoveryType(e); break;
        case Type::IfcAlarmType: return new IfcAlarmType(e); break;
        case Type::IfcAngularDimension: return new IfcAngularDimension(e); break;
        case Type::IfcAnnotation: return new IfcAnnotation(e); break;
        case Type::IfcAnnotationCurveOccurrence: return new IfcAnnotationCurveOccurrence(e); break;
        case Type::IfcAnnotationFillArea: return new IfcAnnotationFillArea(e); break;
        case Type::IfcAnnotationFillAreaOccurrence: return new IfcAnnotationFillAreaOccurrence(e); break;
        case Type::IfcAnnotationOccurrence: return new IfcAnnotationOccurrence(e); break;
        case Type::IfcAnnotationSurface: return new IfcAnnotationSurface(e); break;
        case Type::IfcAnnotationSurfaceOccurrence: return new IfcAnnotationSurfaceOccurrence(e); break;
        case Type::IfcAnnotationSymbolOccurrence: return new IfcAnnotationSymbolOccurrence(e); break;
        case Type::IfcAnnotationTextOccurrence: return new IfcAnnotationTextOccurrence(e); break;
        case Type::IfcApplication: return new IfcApplication(e); break;
        case Type::IfcAppliedValue: return new IfcAppliedValue(e); break;
        case Type::IfcAppliedValueRelationship: return new IfcAppliedValueRelationship(e); break;
        case Type::IfcApproval: return new IfcApproval(e); break;
        case Type::IfcApprovalActorRelationship: return new IfcApprovalActorRelationship(e); break;
        case Type::IfcApprovalPropertyRelationship: return new IfcApprovalPropertyRelationship(e); break;
        case Type::IfcApprovalRelationship: return new IfcApprovalRelationship(e); break;
        case Type::IfcArbitraryClosedProfileDef: return new IfcArbitraryClosedProfileDef(e); break;
        case Type::IfcArbitraryOpenProfileDef: return new IfcArbitraryOpenProfileDef(e); break;
        case Type::IfcArbitraryProfileDefWithVoids: return new IfcArbitraryProfileDefWithVoids(e); break;
        case Type::IfcAsset: return new IfcAsset(e); break;
        case Type::IfcAsymmetricIShapeProfileDef: return new IfcAsymmetricIShapeProfileDef(e); break;
        case Type::IfcAxis1Placement: return new IfcAxis1Placement(e); break;
        case Type::IfcAxis2Placement2D: return new IfcAxis2Placement2D(e); break;
        case Type::IfcAxis2Placement3D: return new IfcAxis2Placement3D(e); break;
        case Type::IfcBSplineCurve: return new IfcBSplineCurve(e); break;
        case Type::IfcBeam: return new IfcBeam(e); break;
        case Type::IfcBeamType: return new IfcBeamType(e); break;
        case Type::IfcBezierCurve: return new IfcBezierCurve(e); break;
        case Type::IfcBlobTexture: return new IfcBlobTexture(e); break;
        case Type::IfcBlock: return new IfcBlock(e); break;
        case Type::IfcBoilerType: return new IfcBoilerType(e); break;
        case Type::IfcBooleanClippingResult: return new IfcBooleanClippingResult(e); break;
        case Type::IfcBooleanResult: return new IfcBooleanResult(e); break;
        case Type::IfcBoundaryCondition: return new IfcBoundaryCondition(e); break;
        case Type::IfcBoundaryEdgeCondition: return new IfcBoundaryEdgeCondition(e); break;
        case Type::IfcBoundaryFaceCondition: return new IfcBoundaryFaceCondition(e); break;
        case Type::IfcBoundaryNodeCondition: return new IfcBoundaryNodeCondition(e); break;
        case Type::IfcBoundaryNodeConditionWarping: return new IfcBoundaryNodeConditionWarping(e); break;
        case Type::IfcBoundedCurve: return new IfcBoundedCurve(e); break;
        case Type::IfcBoundedSurface: return new IfcBoundedSurface(e); break;
        case Type::IfcBoundingBox: return new IfcBoundingBox(e); break;
        case Type::IfcBoxedHalfSpace: return new IfcBoxedHalfSpace(e); break;
        case Type::IfcBuilding: return new IfcBuilding(e); break;
        case Type::IfcBuildingElement: return new IfcBuildingElement(e); break;
        case Type::IfcBuildingElementComponent: return new IfcBuildingElementComponent(e); break;
        case Type::IfcBuildingElementPart: return new IfcBuildingElementPart(e); break;
        case Type::IfcBuildingElementProxy: return new IfcBuildingElementProxy(e); break;
        case Type::IfcBuildingElementProxyType: return new IfcBuildingElementProxyType(e); break;
        case Type::IfcBuildingElementType: return new IfcBuildingElementType(e); break;
        case Type::IfcBuildingStorey: return new IfcBuildingStorey(e); break;
        case Type::IfcCShapeProfileDef: return new IfcCShapeProfileDef(e); break;
        case Type::IfcCableCarrierFittingType: return new IfcCableCarrierFittingType(e); break;
        case Type::IfcCableCarrierSegmentType: return new IfcCableCarrierSegmentType(e); break;
        case Type::IfcCableSegmentType: return new IfcCableSegmentType(e); break;
        case Type::IfcCalendarDate: return new IfcCalendarDate(e); break;
        case Type::IfcCartesianPoint: return new IfcCartesianPoint(e); break;
        case Type::IfcCartesianTransformationOperator: return new IfcCartesianTransformationOperator(e); break;
        case Type::IfcCartesianTransformationOperator2D: return new IfcCartesianTransformationOperator2D(e); break;
        case Type::IfcCartesianTransformationOperator2DnonUniform: return new IfcCartesianTransformationOperator2DnonUniform(e); break;
        case Type::IfcCartesianTransformationOperator3D: return new IfcCartesianTransformationOperator3D(e); break;
        case Type::IfcCartesianTransformationOperator3DnonUniform: return new IfcCartesianTransformationOperator3DnonUniform(e); break;
        case Type::IfcCenterLineProfileDef: return new IfcCenterLineProfileDef(e); break;
        case Type::IfcChamferEdgeFeature: return new IfcChamferEdgeFeature(e); break;
        case Type::IfcChillerType: return new IfcChillerType(e); break;
        case Type::IfcCircle: return new IfcCircle(e); break;
        case Type::IfcCircleHollowProfileDef: return new IfcCircleHollowProfileDef(e); break;
        case Type::IfcCircleProfileDef: return new IfcCircleProfileDef(e); break;
        case Type::IfcClassification: return new IfcClassification(e); break;
        case Type::IfcClassificationItem: return new IfcClassificationItem(e); break;
        case Type::IfcClassificationItemRelationship: return new IfcClassificationItemRelationship(e); break;
        case Type::IfcClassificationNotation: return new IfcClassificationNotation(e); break;
        case Type::IfcClassificationNotationFacet: return new IfcClassificationNotationFacet(e); break;
        case Type::IfcClassificationReference: return new IfcClassificationReference(e); break;
        case Type::IfcClosedShell: return new IfcClosedShell(e); break;
        case Type::IfcCoilType: return new IfcCoilType(e); break;
        case Type::IfcColourRgb: return new IfcColourRgb(e); break;
        case Type::IfcColourSpecification: return new IfcColourSpecification(e); break;
        case Type::IfcColumn: return new IfcColumn(e); break;
        case Type::IfcColumnType: return new IfcColumnType(e); break;
        case Type::IfcComplexProperty: return new IfcComplexProperty(e); break;
        case Type::IfcCompositeCurve: return new IfcCompositeCurve(e); break;
        case Type::IfcCompositeCurveSegment: return new IfcCompositeCurveSegment(e); break;
        case Type::IfcCompositeProfileDef: return new IfcCompositeProfileDef(e); break;
        case Type::IfcCompressorType: return new IfcCompressorType(e); break;
        case Type::IfcCondenserType: return new IfcCondenserType(e); break;
        case Type::IfcCondition: return new IfcCondition(e); break;
        case Type::IfcConditionCriterion: return new IfcConditionCriterion(e); break;
        case Type::IfcConic: return new IfcConic(e); break;
        case Type::IfcConnectedFaceSet: return new IfcConnectedFaceSet(e); break;
        case Type::IfcConnectionCurveGeometry: return new IfcConnectionCurveGeometry(e); break;
        case Type::IfcConnectionGeometry: return new IfcConnectionGeometry(e); break;
        case Type::IfcConnectionPointEccentricity: return new IfcConnectionPointEccentricity(e); break;
        case Type::IfcConnectionPointGeometry: return new IfcConnectionPointGeometry(e); break;
        case Type::IfcConnectionPortGeometry: return new IfcConnectionPortGeometry(e); break;
        case Type::IfcConnectionSurfaceGeometry: return new IfcConnectionSurfaceGeometry(e); break;
        case Type::IfcConstraint: return new IfcConstraint(e); break;
        case Type::IfcConstraintAggregationRelationship: return new IfcConstraintAggregationRelationship(e); break;
        case Type::IfcConstraintClassificationRelationship: return new IfcConstraintClassificationRelationship(e); break;
        case Type::IfcConstraintRelationship: return new IfcConstraintRelationship(e); break;
        case Type::IfcConstructionEquipmentResource: return new IfcConstructionEquipmentResource(e); break;
        case Type::IfcConstructionMaterialResource: return new IfcConstructionMaterialResource(e); break;
        case Type::IfcConstructionProductResource: return new IfcConstructionProductResource(e); break;
        case Type::IfcConstructionResource: return new IfcConstructionResource(e); break;
        case Type::IfcContextDependentUnit: return new IfcContextDependentUnit(e); break;
        case Type::IfcControl: return new IfcControl(e); break;
        case Type::IfcControllerType: return new IfcControllerType(e); break;
        case Type::IfcConversionBasedUnit: return new IfcConversionBasedUnit(e); break;
        case Type::IfcCooledBeamType: return new IfcCooledBeamType(e); break;
        case Type::IfcCoolingTowerType: return new IfcCoolingTowerType(e); break;
        case Type::IfcCoordinatedUniversalTimeOffset: return new IfcCoordinatedUniversalTimeOffset(e); break;
        case Type::IfcCostItem: return new IfcCostItem(e); break;
        case Type::IfcCostSchedule: return new IfcCostSchedule(e); break;
        case Type::IfcCostValue: return new IfcCostValue(e); break;
        case Type::IfcCovering: return new IfcCovering(e); break;
        case Type::IfcCoveringType: return new IfcCoveringType(e); break;
        case Type::IfcCraneRailAShapeProfileDef: return new IfcCraneRailAShapeProfileDef(e); break;
        case Type::IfcCraneRailFShapeProfileDef: return new IfcCraneRailFShapeProfileDef(e); break;
        case Type::IfcCrewResource: return new IfcCrewResource(e); break;
        case Type::IfcCsgPrimitive3D: return new IfcCsgPrimitive3D(e); break;
        case Type::IfcCsgSolid: return new IfcCsgSolid(e); break;
        case Type::IfcCurrencyRelationship: return new IfcCurrencyRelationship(e); break;
        case Type::IfcCurtainWall: return new IfcCurtainWall(e); break;
        case Type::IfcCurtainWallType: return new IfcCurtainWallType(e); break;
        case Type::IfcCurve: return new IfcCurve(e); break;
        case Type::IfcCurveBoundedPlane: return new IfcCurveBoundedPlane(e); break;
        case Type::IfcCurveStyle: return new IfcCurveStyle(e); break;
        case Type::IfcCurveStyleFont: return new IfcCurveStyleFont(e); break;
        case Type::IfcCurveStyleFontAndScaling: return new IfcCurveStyleFontAndScaling(e); break;
        case Type::IfcCurveStyleFontPattern: return new IfcCurveStyleFontPattern(e); break;
        case Type::IfcDamperType: return new IfcDamperType(e); break;
        case Type::IfcDateAndTime: return new IfcDateAndTime(e); break;
        case Type::IfcDefinedSymbol: return new IfcDefinedSymbol(e); break;
        case Type::IfcDerivedProfileDef: return new IfcDerivedProfileDef(e); break;
        case Type::IfcDerivedUnit: return new IfcDerivedUnit(e); break;
        case Type::IfcDerivedUnitElement: return new IfcDerivedUnitElement(e); break;
        case Type::IfcDiameterDimension: return new IfcDiameterDimension(e); break;
        case Type::IfcDimensionCalloutRelationship: return new IfcDimensionCalloutRelationship(e); break;
        case Type::IfcDimensionCurve: return new IfcDimensionCurve(e); break;
        case Type::IfcDimensionCurveDirectedCallout: return new IfcDimensionCurveDirectedCallout(e); break;
        case Type::IfcDimensionCurveTerminator: return new IfcDimensionCurveTerminator(e); break;
        case Type::IfcDimensionPair: return new IfcDimensionPair(e); break;
        case Type::IfcDimensionalExponents: return new IfcDimensionalExponents(e); break;
        case Type::IfcDirection: return new IfcDirection(e); break;
        case Type::IfcDiscreteAccessory: return new IfcDiscreteAccessory(e); break;
        case Type::IfcDiscreteAccessoryType: return new IfcDiscreteAccessoryType(e); break;
        case Type::IfcDistributionChamberElement: return new IfcDistributionChamberElement(e); break;
        case Type::IfcDistributionChamberElementType: return new IfcDistributionChamberElementType(e); break;
        case Type::IfcDistributionControlElement: return new IfcDistributionControlElement(e); break;
        case Type::IfcDistributionControlElementType: return new IfcDistributionControlElementType(e); break;
        case Type::IfcDistributionElement: return new IfcDistributionElement(e); break;
        case Type::IfcDistributionElementType: return new IfcDistributionElementType(e); break;
        case Type::IfcDistributionFlowElement: return new IfcDistributionFlowElement(e); break;
        case Type::IfcDistributionFlowElementType: return new IfcDistributionFlowElementType(e); break;
        case Type::IfcDistributionPort: return new IfcDistributionPort(e); break;
        case Type::IfcDocumentElectronicFormat: return new IfcDocumentElectronicFormat(e); break;
        case Type::IfcDocumentInformation: return new IfcDocumentInformation(e); break;
        case Type::IfcDocumentInformationRelationship: return new IfcDocumentInformationRelationship(e); break;
        case Type::IfcDocumentReference: return new IfcDocumentReference(e); break;
        case Type::IfcDoor: return new IfcDoor(e); break;
        case Type::IfcDoorLiningProperties: return new IfcDoorLiningProperties(e); break;
        case Type::IfcDoorPanelProperties: return new IfcDoorPanelProperties(e); break;
        case Type::IfcDoorStyle: return new IfcDoorStyle(e); break;
        case Type::IfcDraughtingCallout: return new IfcDraughtingCallout(e); break;
        case Type::IfcDraughtingCalloutRelationship: return new IfcDraughtingCalloutRelationship(e); break;
        case Type::IfcDraughtingPreDefinedColour: return new IfcDraughtingPreDefinedColour(e); break;
        case Type::IfcDraughtingPreDefinedCurveFont: return new IfcDraughtingPreDefinedCurveFont(e); break;
        case Type::IfcDraughtingPreDefinedTextFont: return new IfcDraughtingPreDefinedTextFont(e); break;
        case Type::IfcDuctFittingType: return new IfcDuctFittingType(e); break;
        case Type::IfcDuctSegmentType: return new IfcDuctSegmentType(e); break;
        case Type::IfcDuctSilencerType: return new IfcDuctSilencerType(e); break;
        case Type::IfcEdge: return new IfcEdge(e); break;
        case Type::IfcEdgeCurve: return new IfcEdgeCurve(e); break;
        case Type::IfcEdgeFeature: return new IfcEdgeFeature(e); break;
        case Type::IfcEdgeLoop: return new IfcEdgeLoop(e); break;
        case Type::IfcElectricApplianceType: return new IfcElectricApplianceType(e); break;
        case Type::IfcElectricDistributionPoint: return new IfcElectricDistributionPoint(e); break;
        case Type::IfcElectricFlowStorageDeviceType: return new IfcElectricFlowStorageDeviceType(e); break;
        case Type::IfcElectricGeneratorType: return new IfcElectricGeneratorType(e); break;
        case Type::IfcElectricHeaterType: return new IfcElectricHeaterType(e); break;
        case Type::IfcElectricMotorType: return new IfcElectricMotorType(e); break;
        case Type::IfcElectricTimeControlType: return new IfcElectricTimeControlType(e); break;
        case Type::IfcElectricalBaseProperties: return new IfcElectricalBaseProperties(e); break;
        case Type::IfcElectricalCircuit: return new IfcElectricalCircuit(e); break;
        case Type::IfcElectricalElement: return new IfcElectricalElement(e); break;
        case Type::IfcElement: return new IfcElement(e); break;
        case Type::IfcElementAssembly: return new IfcElementAssembly(e); break;
        case Type::IfcElementComponent: return new IfcElementComponent(e); break;
        case Type::IfcElementComponentType: return new IfcElementComponentType(e); break;
        case Type::IfcElementQuantity: return new IfcElementQuantity(e); break;
        case Type::IfcElementType: return new IfcElementType(e); break;
        case Type::IfcElementarySurface: return new IfcElementarySurface(e); break;
        case Type::IfcEllipse: return new IfcEllipse(e); break;
        case Type::IfcEllipseProfileDef: return new IfcEllipseProfileDef(e); break;
        case Type::IfcEnergyConversionDevice: return new IfcEnergyConversionDevice(e); break;
        case Type::IfcEnergyConversionDeviceType: return new IfcEnergyConversionDeviceType(e); break;
        case Type::IfcEnergyProperties: return new IfcEnergyProperties(e); break;
        case Type::IfcEnvironmentalImpactValue: return new IfcEnvironmentalImpactValue(e); break;
        case Type::IfcEquipmentElement: return new IfcEquipmentElement(e); break;
        case Type::IfcEquipmentStandard: return new IfcEquipmentStandard(e); break;
        case Type::IfcEvaporativeCoolerType: return new IfcEvaporativeCoolerType(e); break;
        case Type::IfcEvaporatorType: return new IfcEvaporatorType(e); break;
        case Type::IfcExtendedMaterialProperties: return new IfcExtendedMaterialProperties(e); break;
        case Type::IfcExternalReference: return new IfcExternalReference(e); break;
        case Type::IfcExternallyDefinedHatchStyle: return new IfcExternallyDefinedHatchStyle(e); break;
        case Type::IfcExternallyDefinedSurfaceStyle: return new IfcExternallyDefinedSurfaceStyle(e); break;
        case Type::IfcExternallyDefinedSymbol: return new IfcExternallyDefinedSymbol(e); break;
        case Type::IfcExternallyDefinedTextFont: return new IfcExternallyDefinedTextFont(e); break;
        case Type::IfcExtrudedAreaSolid: return new IfcExtrudedAreaSolid(e); break;
        case Type::IfcFace: return new IfcFace(e); break;
        case Type::IfcFaceBasedSurfaceModel: return new IfcFaceBasedSurfaceModel(e); break;
        case Type::IfcFaceBound: return new IfcFaceBound(e); break;
        case Type::IfcFaceOuterBound: return new IfcFaceOuterBound(e); break;
        case Type::IfcFaceSurface: return new IfcFaceSurface(e); break;
        case Type::IfcFacetedBrep: return new IfcFacetedBrep(e); break;
        case Type::IfcFacetedBrepWithVoids: return new IfcFacetedBrepWithVoids(e); break;
        case Type::IfcFailureConnectionCondition: return new IfcFailureConnectionCondition(e); break;
        case Type::IfcFanType: return new IfcFanType(e); break;
        case Type::IfcFastener: return new IfcFastener(e); break;
        case Type::IfcFastenerType: return new IfcFastenerType(e); break;
        case Type::IfcFeatureElement: return new IfcFeatureElement(e); break;
        case Type::IfcFeatureElementAddition: return new IfcFeatureElementAddition(e); break;
        case Type::IfcFeatureElementSubtraction: return new IfcFeatureElementSubtraction(e); break;
        case Type::IfcFillAreaStyle: return new IfcFillAreaStyle(e); break;
        case Type::IfcFillAreaStyleHatching: return new IfcFillAreaStyleHatching(e); break;
        case Type::IfcFillAreaStyleTileSymbolWithStyle: return new IfcFillAreaStyleTileSymbolWithStyle(e); break;
        case Type::IfcFillAreaStyleTiles: return new IfcFillAreaStyleTiles(e); break;
        case Type::IfcFilterType: return new IfcFilterType(e); break;
        case Type::IfcFireSuppressionTerminalType: return new IfcFireSuppressionTerminalType(e); break;
        case Type::IfcFlowController: return new IfcFlowController(e); break;
        case Type::IfcFlowControllerType: return new IfcFlowControllerType(e); break;
        case Type::IfcFlowFitting: return new IfcFlowFitting(e); break;
        case Type::IfcFlowFittingType: return new IfcFlowFittingType(e); break;
        case Type::IfcFlowInstrumentType: return new IfcFlowInstrumentType(e); break;
        case Type::IfcFlowMeterType: return new IfcFlowMeterType(e); break;
        case Type::IfcFlowMovingDevice: return new IfcFlowMovingDevice(e); break;
        case Type::IfcFlowMovingDeviceType: return new IfcFlowMovingDeviceType(e); break;
        case Type::IfcFlowSegment: return new IfcFlowSegment(e); break;
        case Type::IfcFlowSegmentType: return new IfcFlowSegmentType(e); break;
        case Type::IfcFlowStorageDevice: return new IfcFlowStorageDevice(e); break;
        case Type::IfcFlowStorageDeviceType: return new IfcFlowStorageDeviceType(e); break;
        case Type::IfcFlowTerminal: return new IfcFlowTerminal(e); break;
        case Type::IfcFlowTerminalType: return new IfcFlowTerminalType(e); break;
        case Type::IfcFlowTreatmentDevice: return new IfcFlowTreatmentDevice(e); break;
        case Type::IfcFlowTreatmentDeviceType: return new IfcFlowTreatmentDeviceType(e); break;
        case Type::IfcFluidFlowProperties: return new IfcFluidFlowProperties(e); break;
        case Type::IfcFooting: return new IfcFooting(e); break;
        case Type::IfcFuelProperties: return new IfcFuelProperties(e); break;
        case Type::IfcFurnishingElement: return new IfcFurnishingElement(e); break;
        case Type::IfcFurnishingElementType: return new IfcFurnishingElementType(e); break;
        case Type::IfcFurnitureStandard: return new IfcFurnitureStandard(e); break;
        case Type::IfcFurnitureType: return new IfcFurnitureType(e); break;
        case Type::IfcGasTerminalType: return new IfcGasTerminalType(e); break;
        case Type::IfcGeneralMaterialProperties: return new IfcGeneralMaterialProperties(e); break;
        case Type::IfcGeneralProfileProperties: return new IfcGeneralProfileProperties(e); break;
        case Type::IfcGeometricCurveSet: return new IfcGeometricCurveSet(e); break;
        case Type::IfcGeometricRepresentationContext: return new IfcGeometricRepresentationContext(e); break;
        case Type::IfcGeometricRepresentationItem: return new IfcGeometricRepresentationItem(e); break;
        case Type::IfcGeometricRepresentationSubContext: return new IfcGeometricRepresentationSubContext(e); break;
        case Type::IfcGeometricSet: return new IfcGeometricSet(e); break;
        case Type::IfcGrid: return new IfcGrid(e); break;
        case Type::IfcGridAxis: return new IfcGridAxis(e); break;
        case Type::IfcGridPlacement: return new IfcGridPlacement(e); break;
        case Type::IfcGroup: return new IfcGroup(e); break;
        case Type::IfcHalfSpaceSolid: return new IfcHalfSpaceSolid(e); break;
        case Type::IfcHeatExchangerType: return new IfcHeatExchangerType(e); break;
        case Type::IfcHumidifierType: return new IfcHumidifierType(e); break;
        case Type::IfcHygroscopicMaterialProperties: return new IfcHygroscopicMaterialProperties(e); break;
        case Type::IfcIShapeProfileDef: return new IfcIShapeProfileDef(e); break;
        case Type::IfcImageTexture: return new IfcImageTexture(e); break;
        case Type::IfcInventory: return new IfcInventory(e); break;
        case Type::IfcIrregularTimeSeries: return new IfcIrregularTimeSeries(e); break;
        case Type::IfcIrregularTimeSeriesValue: return new IfcIrregularTimeSeriesValue(e); break;
        case Type::IfcJunctionBoxType: return new IfcJunctionBoxType(e); break;
        case Type::IfcLShapeProfileDef: return new IfcLShapeProfileDef(e); break;
        case Type::IfcLaborResource: return new IfcLaborResource(e); break;
        case Type::IfcLampType: return new IfcLampType(e); break;
        case Type::IfcLibraryInformation: return new IfcLibraryInformation(e); break;
        case Type::IfcLibraryReference: return new IfcLibraryReference(e); break;
        case Type::IfcLightDistributionData: return new IfcLightDistributionData(e); break;
        case Type::IfcLightFixtureType: return new IfcLightFixtureType(e); break;
        case Type::IfcLightIntensityDistribution: return new IfcLightIntensityDistribution(e); break;
        case Type::IfcLightSource: return new IfcLightSource(e); break;
        case Type::IfcLightSourceAmbient: return new IfcLightSourceAmbient(e); break;
        case Type::IfcLightSourceDirectional: return new IfcLightSourceDirectional(e); break;
        case Type::IfcLightSourceGoniometric: return new IfcLightSourceGoniometric(e); break;
        case Type::IfcLightSourcePositional: return new IfcLightSourcePositional(e); break;
        case Type::IfcLightSourceSpot: return new IfcLightSourceSpot(e); break;
        case Type::IfcLine: return new IfcLine(e); break;
        case Type::IfcLinearDimension: return new IfcLinearDimension(e); break;
        case Type::IfcLocalPlacement: return new IfcLocalPlacement(e); break;
        case Type::IfcLocalTime: return new IfcLocalTime(e); break;
        case Type::IfcLoop: return new IfcLoop(e); break;
        case Type::IfcManifoldSolidBrep: return new IfcManifoldSolidBrep(e); break;
        case Type::IfcMappedItem: return new IfcMappedItem(e); break;
        case Type::IfcMaterial: return new IfcMaterial(e); break;
        case Type::IfcMaterialClassificationRelationship: return new IfcMaterialClassificationRelationship(e); break;
        case Type::IfcMaterialDefinitionRepresentation: return new IfcMaterialDefinitionRepresentation(e); break;
        case Type::IfcMaterialLayer: return new IfcMaterialLayer(e); break;
        case Type::IfcMaterialLayerSet: return new IfcMaterialLayerSet(e); break;
        case Type::IfcMaterialLayerSetUsage: return new IfcMaterialLayerSetUsage(e); break;
        case Type::IfcMaterialList: return new IfcMaterialList(e); break;
        case Type::IfcMaterialProperties: return new IfcMaterialProperties(e); break;
        case Type::IfcMeasureWithUnit: return new IfcMeasureWithUnit(e); break;
        case Type::IfcMechanicalConcreteMaterialProperties: return new IfcMechanicalConcreteMaterialProperties(e); break;
        case Type::IfcMechanicalFastener: return new IfcMechanicalFastener(e); break;
        case Type::IfcMechanicalFastenerType: return new IfcMechanicalFastenerType(e); break;
        case Type::IfcMechanicalMaterialProperties: return new IfcMechanicalMaterialProperties(e); break;
        case Type::IfcMechanicalSteelMaterialProperties: return new IfcMechanicalSteelMaterialProperties(e); break;
        case Type::IfcMember: return new IfcMember(e); break;
        case Type::IfcMemberType: return new IfcMemberType(e); break;
        case Type::IfcMetric: return new IfcMetric(e); break;
        case Type::IfcMonetaryUnit: return new IfcMonetaryUnit(e); break;
        case Type::IfcMotorConnectionType: return new IfcMotorConnectionType(e); break;
        case Type::IfcMove: return new IfcMove(e); break;
        case Type::IfcNamedUnit: return new IfcNamedUnit(e); break;
        case Type::IfcObject: return new IfcObject(e); break;
        case Type::IfcObjectDefinition: return new IfcObjectDefinition(e); break;
        case Type::IfcObjectPlacement: return new IfcObjectPlacement(e); break;
        case Type::IfcObjective: return new IfcObjective(e); break;
        case Type::IfcOccupant: return new IfcOccupant(e); break;
        case Type::IfcOffsetCurve2D: return new IfcOffsetCurve2D(e); break;
        case Type::IfcOffsetCurve3D: return new IfcOffsetCurve3D(e); break;
        case Type::IfcOneDirectionRepeatFactor: return new IfcOneDirectionRepeatFactor(e); break;
        case Type::IfcOpenShell: return new IfcOpenShell(e); break;
        case Type::IfcOpeningElement: return new IfcOpeningElement(e); break;
        case Type::IfcOpticalMaterialProperties: return new IfcOpticalMaterialProperties(e); break;
        case Type::IfcOrderAction: return new IfcOrderAction(e); break;
        case Type::IfcOrganization: return new IfcOrganization(e); break;
        case Type::IfcOrganizationRelationship: return new IfcOrganizationRelationship(e); break;
        case Type::IfcOrientedEdge: return new IfcOrientedEdge(e); break;
        case Type::IfcOutletType: return new IfcOutletType(e); break;
        case Type::IfcOwnerHistory: return new IfcOwnerHistory(e); break;
        case Type::IfcParameterizedProfileDef: return new IfcParameterizedProfileDef(e); break;
        case Type::IfcPath: return new IfcPath(e); break;
        case Type::IfcPerformanceHistory: return new IfcPerformanceHistory(e); break;
        case Type::IfcPermeableCoveringProperties: return new IfcPermeableCoveringProperties(e); break;
        case Type::IfcPermit: return new IfcPermit(e); break;
        case Type::IfcPerson: return new IfcPerson(e); break;
        case Type::IfcPersonAndOrganization: return new IfcPersonAndOrganization(e); break;
        case Type::IfcPhysicalComplexQuantity: return new IfcPhysicalComplexQuantity(e); break;
        case Type::IfcPhysicalQuantity: return new IfcPhysicalQuantity(e); break;
        case Type::IfcPhysicalSimpleQuantity: return new IfcPhysicalSimpleQuantity(e); break;
        case Type::IfcPile: return new IfcPile(e); break;
        case Type::IfcPipeFittingType: return new IfcPipeFittingType(e); break;
        case Type::IfcPipeSegmentType: return new IfcPipeSegmentType(e); break;
        case Type::IfcPixelTexture: return new IfcPixelTexture(e); break;
        case Type::IfcPlacement: return new IfcPlacement(e); break;
        case Type::IfcPlanarBox: return new IfcPlanarBox(e); break;
        case Type::IfcPlanarExtent: return new IfcPlanarExtent(e); break;
        case Type::IfcPlane: return new IfcPlane(e); break;
        case Type::IfcPlate: return new IfcPlate(e); break;
        case Type::IfcPlateType: return new IfcPlateType(e); break;
        case Type::IfcPoint: return new IfcPoint(e); break;
        case Type::IfcPointOnCurve: return new IfcPointOnCurve(e); break;
        case Type::IfcPointOnSurface: return new IfcPointOnSurface(e); break;
        case Type::IfcPolyLoop: return new IfcPolyLoop(e); break;
        case Type::IfcPolygonalBoundedHalfSpace: return new IfcPolygonalBoundedHalfSpace(e); break;
        case Type::IfcPolyline: return new IfcPolyline(e); break;
        case Type::IfcPort: return new IfcPort(e); break;
        case Type::IfcPostalAddress: return new IfcPostalAddress(e); break;
        case Type::IfcPreDefinedColour: return new IfcPreDefinedColour(e); break;
        case Type::IfcPreDefinedCurveFont: return new IfcPreDefinedCurveFont(e); break;
        case Type::IfcPreDefinedDimensionSymbol: return new IfcPreDefinedDimensionSymbol(e); break;
        case Type::IfcPreDefinedItem: return new IfcPreDefinedItem(e); break;
        case Type::IfcPreDefinedPointMarkerSymbol: return new IfcPreDefinedPointMarkerSymbol(e); break;
        case Type::IfcPreDefinedSymbol: return new IfcPreDefinedSymbol(e); break;
        case Type::IfcPreDefinedTerminatorSymbol: return new IfcPreDefinedTerminatorSymbol(e); break;
        case Type::IfcPreDefinedTextFont: return new IfcPreDefinedTextFont(e); break;
        case Type::IfcPresentationLayerAssignment: return new IfcPresentationLayerAssignment(e); break;
        case Type::IfcPresentationLayerWithStyle: return new IfcPresentationLayerWithStyle(e); break;
        case Type::IfcPresentationStyle: return new IfcPresentationStyle(e); break;
        case Type::IfcPresentationStyleAssignment: return new IfcPresentationStyleAssignment(e); break;
        case Type::IfcProcedure: return new IfcProcedure(e); break;
        case Type::IfcProcess: return new IfcProcess(e); break;
        case Type::IfcProduct: return new IfcProduct(e); break;
        case Type::IfcProductDefinitionShape: return new IfcProductDefinitionShape(e); break;
        case Type::IfcProductRepresentation: return new IfcProductRepresentation(e); break;
        case Type::IfcProductsOfCombustionProperties: return new IfcProductsOfCombustionProperties(e); break;
        case Type::IfcProfileDef: return new IfcProfileDef(e); break;
        case Type::IfcProfileProperties: return new IfcProfileProperties(e); break;
        case Type::IfcProject: return new IfcProject(e); break;
        case Type::IfcProjectOrder: return new IfcProjectOrder(e); break;
        case Type::IfcProjectOrderRecord: return new IfcProjectOrderRecord(e); break;
        case Type::IfcProjectionCurve: return new IfcProjectionCurve(e); break;
        case Type::IfcProjectionElement: return new IfcProjectionElement(e); break;
        case Type::IfcProperty: return new IfcProperty(e); break;
        case Type::IfcPropertyBoundedValue: return new IfcPropertyBoundedValue(e); break;
        case Type::IfcPropertyConstraintRelationship: return new IfcPropertyConstraintRelationship(e); break;
        case Type::IfcPropertyDefinition: return new IfcPropertyDefinition(e); break;
        case Type::IfcPropertyDependencyRelationship: return new IfcPropertyDependencyRelationship(e); break;
        case Type::IfcPropertyEnumeratedValue: return new IfcPropertyEnumeratedValue(e); break;
        case Type::IfcPropertyEnumeration: return new IfcPropertyEnumeration(e); break;
        case Type::IfcPropertyListValue: return new IfcPropertyListValue(e); break;
        case Type::IfcPropertyReferenceValue: return new IfcPropertyReferenceValue(e); break;
        case Type::IfcPropertySet: return new IfcPropertySet(e); break;
        case Type::IfcPropertySetDefinition: return new IfcPropertySetDefinition(e); break;
        case Type::IfcPropertySingleValue: return new IfcPropertySingleValue(e); break;
        case Type::IfcPropertyTableValue: return new IfcPropertyTableValue(e); break;
        case Type::IfcProtectiveDeviceType: return new IfcProtectiveDeviceType(e); break;
        case Type::IfcProxy: return new IfcProxy(e); break;
        case Type::IfcPumpType: return new IfcPumpType(e); break;
        case Type::IfcQuantityArea: return new IfcQuantityArea(e); break;
        case Type::IfcQuantityCount: return new IfcQuantityCount(e); break;
        case Type::IfcQuantityLength: return new IfcQuantityLength(e); break;
        case Type::IfcQuantityTime: return new IfcQuantityTime(e); break;
        case Type::IfcQuantityVolume: return new IfcQuantityVolume(e); break;
        case Type::IfcQuantityWeight: return new IfcQuantityWeight(e); break;
        case Type::IfcRadiusDimension: return new IfcRadiusDimension(e); break;
        case Type::IfcRailing: return new IfcRailing(e); break;
        case Type::IfcRailingType: return new IfcRailingType(e); break;
        case Type::IfcRamp: return new IfcRamp(e); break;
        case Type::IfcRampFlight: return new IfcRampFlight(e); break;
        case Type::IfcRampFlightType: return new IfcRampFlightType(e); break;
        case Type::IfcRationalBezierCurve: return new IfcRationalBezierCurve(e); break;
        case Type::IfcRectangleHollowProfileDef: return new IfcRectangleHollowProfileDef(e); break;
        case Type::IfcRectangleProfileDef: return new IfcRectangleProfileDef(e); break;
        case Type::IfcRectangularPyramid: return new IfcRectangularPyramid(e); break;
        case Type::IfcRectangularTrimmedSurface: return new IfcRectangularTrimmedSurface(e); break;
        case Type::IfcReferencesValueDocument: return new IfcReferencesValueDocument(e); break;
        case Type::IfcRegularTimeSeries: return new IfcRegularTimeSeries(e); break;
        case Type::IfcReinforcementBarProperties: return new IfcReinforcementBarProperties(e); break;
        case Type::IfcReinforcementDefinitionProperties: return new IfcReinforcementDefinitionProperties(e); break;
        case Type::IfcReinforcingBar: return new IfcReinforcingBar(e); break;
        case Type::IfcReinforcingElement: return new IfcReinforcingElement(e); break;
        case Type::IfcReinforcingMesh: return new IfcReinforcingMesh(e); break;
        case Type::IfcRelAggregates: return new IfcRelAggregates(e); break;
        case Type::IfcRelAssigns: return new IfcRelAssigns(e); break;
        case Type::IfcRelAssignsTasks: return new IfcRelAssignsTasks(e); break;
        case Type::IfcRelAssignsToActor: return new IfcRelAssignsToActor(e); break;
        case Type::IfcRelAssignsToControl: return new IfcRelAssignsToControl(e); break;
        case Type::IfcRelAssignsToGroup: return new IfcRelAssignsToGroup(e); break;
        case Type::IfcRelAssignsToProcess: return new IfcRelAssignsToProcess(e); break;
        case Type::IfcRelAssignsToProduct: return new IfcRelAssignsToProduct(e); break;
        case Type::IfcRelAssignsToProjectOrder: return new IfcRelAssignsToProjectOrder(e); break;
        case Type::IfcRelAssignsToResource: return new IfcRelAssignsToResource(e); break;
        case Type::IfcRelAssociates: return new IfcRelAssociates(e); break;
        case Type::IfcRelAssociatesAppliedValue: return new IfcRelAssociatesAppliedValue(e); break;
        case Type::IfcRelAssociatesApproval: return new IfcRelAssociatesApproval(e); break;
        case Type::IfcRelAssociatesClassification: return new IfcRelAssociatesClassification(e); break;
        case Type::IfcRelAssociatesConstraint: return new IfcRelAssociatesConstraint(e); break;
        case Type::IfcRelAssociatesDocument: return new IfcRelAssociatesDocument(e); break;
        case Type::IfcRelAssociatesLibrary: return new IfcRelAssociatesLibrary(e); break;
        case Type::IfcRelAssociatesMaterial: return new IfcRelAssociatesMaterial(e); break;
        case Type::IfcRelAssociatesProfileProperties: return new IfcRelAssociatesProfileProperties(e); break;
        case Type::IfcRelConnects: return new IfcRelConnects(e); break;
        case Type::IfcRelConnectsElements: return new IfcRelConnectsElements(e); break;
        case Type::IfcRelConnectsPathElements: return new IfcRelConnectsPathElements(e); break;
        case Type::IfcRelConnectsPortToElement: return new IfcRelConnectsPortToElement(e); break;
        case Type::IfcRelConnectsPorts: return new IfcRelConnectsPorts(e); break;
        case Type::IfcRelConnectsStructuralActivity: return new IfcRelConnectsStructuralActivity(e); break;
        case Type::IfcRelConnectsStructuralElement: return new IfcRelConnectsStructuralElement(e); break;
        case Type::IfcRelConnectsStructuralMember: return new IfcRelConnectsStructuralMember(e); break;
        case Type::IfcRelConnectsWithEccentricity: return new IfcRelConnectsWithEccentricity(e); break;
        case Type::IfcRelConnectsWithRealizingElements: return new IfcRelConnectsWithRealizingElements(e); break;
        case Type::IfcRelContainedInSpatialStructure: return new IfcRelContainedInSpatialStructure(e); break;
        case Type::IfcRelCoversBldgElements: return new IfcRelCoversBldgElements(e); break;
        case Type::IfcRelCoversSpaces: return new IfcRelCoversSpaces(e); break;
        case Type::IfcRelDecomposes: return new IfcRelDecomposes(e); break;
        case Type::IfcRelDefines: return new IfcRelDefines(e); break;
        case Type::IfcRelDefinesByProperties: return new IfcRelDefinesByProperties(e); break;
        case Type::IfcRelDefinesByType: return new IfcRelDefinesByType(e); break;
        case Type::IfcRelFillsElement: return new IfcRelFillsElement(e); break;
        case Type::IfcRelFlowControlElements: return new IfcRelFlowControlElements(e); break;
        case Type::IfcRelInteractionRequirements: return new IfcRelInteractionRequirements(e); break;
        case Type::IfcRelNests: return new IfcRelNests(e); break;
        case Type::IfcRelOccupiesSpaces: return new IfcRelOccupiesSpaces(e); break;
        case Type::IfcRelOverridesProperties: return new IfcRelOverridesProperties(e); break;
        case Type::IfcRelProjectsElement: return new IfcRelProjectsElement(e); break;
        case Type::IfcRelReferencedInSpatialStructure: return new IfcRelReferencedInSpatialStructure(e); break;
        case Type::IfcRelSchedulesCostItems: return new IfcRelSchedulesCostItems(e); break;
        case Type::IfcRelSequence: return new IfcRelSequence(e); break;
        case Type::IfcRelServicesBuildings: return new IfcRelServicesBuildings(e); break;
        case Type::IfcRelSpaceBoundary: return new IfcRelSpaceBoundary(e); break;
        case Type::IfcRelVoidsElement: return new IfcRelVoidsElement(e); break;
        case Type::IfcRelationship: return new IfcRelationship(e); break;
        case Type::IfcRelaxation: return new IfcRelaxation(e); break;
        case Type::IfcRepresentation: return new IfcRepresentation(e); break;
        case Type::IfcRepresentationContext: return new IfcRepresentationContext(e); break;
        case Type::IfcRepresentationItem: return new IfcRepresentationItem(e); break;
        case Type::IfcRepresentationMap: return new IfcRepresentationMap(e); break;
        case Type::IfcResource: return new IfcResource(e); break;
        case Type::IfcRevolvedAreaSolid: return new IfcRevolvedAreaSolid(e); break;
        case Type::IfcRibPlateProfileProperties: return new IfcRibPlateProfileProperties(e); break;
        case Type::IfcRightCircularCone: return new IfcRightCircularCone(e); break;
        case Type::IfcRightCircularCylinder: return new IfcRightCircularCylinder(e); break;
        case Type::IfcRoof: return new IfcRoof(e); break;
        case Type::IfcRoot: return new IfcRoot(e); break;
        case Type::IfcRoundedEdgeFeature: return new IfcRoundedEdgeFeature(e); break;
        case Type::IfcRoundedRectangleProfileDef: return new IfcRoundedRectangleProfileDef(e); break;
        case Type::IfcSIUnit: return new IfcSIUnit(e); break;
        case Type::IfcSanitaryTerminalType: return new IfcSanitaryTerminalType(e); break;
        case Type::IfcScheduleTimeControl: return new IfcScheduleTimeControl(e); break;
        case Type::IfcSectionProperties: return new IfcSectionProperties(e); break;
        case Type::IfcSectionReinforcementProperties: return new IfcSectionReinforcementProperties(e); break;
        case Type::IfcSectionedSpine: return new IfcSectionedSpine(e); break;
        case Type::IfcSensorType: return new IfcSensorType(e); break;
        case Type::IfcServiceLife: return new IfcServiceLife(e); break;
        case Type::IfcServiceLifeFactor: return new IfcServiceLifeFactor(e); break;
        case Type::IfcShapeAspect: return new IfcShapeAspect(e); break;
        case Type::IfcShapeModel: return new IfcShapeModel(e); break;
        case Type::IfcShapeRepresentation: return new IfcShapeRepresentation(e); break;
        case Type::IfcShellBasedSurfaceModel: return new IfcShellBasedSurfaceModel(e); break;
        case Type::IfcSimpleProperty: return new IfcSimpleProperty(e); break;
        case Type::IfcSite: return new IfcSite(e); break;
        case Type::IfcSlab: return new IfcSlab(e); break;
        case Type::IfcSlabType: return new IfcSlabType(e); break;
        case Type::IfcSlippageConnectionCondition: return new IfcSlippageConnectionCondition(e); break;
        case Type::IfcSolidModel: return new IfcSolidModel(e); break;
        case Type::IfcSoundProperties: return new IfcSoundProperties(e); break;
        case Type::IfcSoundValue: return new IfcSoundValue(e); break;
        case Type::IfcSpace: return new IfcSpace(e); break;
        case Type::IfcSpaceHeaterType: return new IfcSpaceHeaterType(e); break;
        case Type::IfcSpaceProgram: return new IfcSpaceProgram(e); break;
        case Type::IfcSpaceThermalLoadProperties: return new IfcSpaceThermalLoadProperties(e); break;
        case Type::IfcSpaceType: return new IfcSpaceType(e); break;
        case Type::IfcSpatialStructureElement: return new IfcSpatialStructureElement(e); break;
        case Type::IfcSpatialStructureElementType: return new IfcSpatialStructureElementType(e); break;
        case Type::IfcSphere: return new IfcSphere(e); break;
        case Type::IfcStackTerminalType: return new IfcStackTerminalType(e); break;
        case Type::IfcStair: return new IfcStair(e); break;
        case Type::IfcStairFlight: return new IfcStairFlight(e); break;
        case Type::IfcStairFlightType: return new IfcStairFlightType(e); break;
        case Type::IfcStructuralAction: return new IfcStructuralAction(e); break;
        case Type::IfcStructuralActivity: return new IfcStructuralActivity(e); break;
        case Type::IfcStructuralAnalysisModel: return new IfcStructuralAnalysisModel(e); break;
        case Type::IfcStructuralConnection: return new IfcStructuralConnection(e); break;
        case Type::IfcStructuralConnectionCondition: return new IfcStructuralConnectionCondition(e); break;
        case Type::IfcStructuralCurveConnection: return new IfcStructuralCurveConnection(e); break;
        case Type::IfcStructuralCurveMember: return new IfcStructuralCurveMember(e); break;
        case Type::IfcStructuralCurveMemberVarying: return new IfcStructuralCurveMemberVarying(e); break;
        case Type::IfcStructuralItem: return new IfcStructuralItem(e); break;
        case Type::IfcStructuralLinearAction: return new IfcStructuralLinearAction(e); break;
        case Type::IfcStructuralLinearActionVarying: return new IfcStructuralLinearActionVarying(e); break;
        case Type::IfcStructuralLoad: return new IfcStructuralLoad(e); break;
        case Type::IfcStructuralLoadGroup: return new IfcStructuralLoadGroup(e); break;
        case Type::IfcStructuralLoadLinearForce: return new IfcStructuralLoadLinearForce(e); break;
        case Type::IfcStructuralLoadPlanarForce: return new IfcStructuralLoadPlanarForce(e); break;
        case Type::IfcStructuralLoadSingleDisplacement: return new IfcStructuralLoadSingleDisplacement(e); break;
        case Type::IfcStructuralLoadSingleDisplacementDistortion: return new IfcStructuralLoadSingleDisplacementDistortion(e); break;
        case Type::IfcStructuralLoadSingleForce: return new IfcStructuralLoadSingleForce(e); break;
        case Type::IfcStructuralLoadSingleForceWarping: return new IfcStructuralLoadSingleForceWarping(e); break;
        case Type::IfcStructuralLoadStatic: return new IfcStructuralLoadStatic(e); break;
        case Type::IfcStructuralLoadTemperature: return new IfcStructuralLoadTemperature(e); break;
        case Type::IfcStructuralMember: return new IfcStructuralMember(e); break;
        case Type::IfcStructuralPlanarAction: return new IfcStructuralPlanarAction(e); break;
        case Type::IfcStructuralPlanarActionVarying: return new IfcStructuralPlanarActionVarying(e); break;
        case Type::IfcStructuralPointAction: return new IfcStructuralPointAction(e); break;
        case Type::IfcStructuralPointConnection: return new IfcStructuralPointConnection(e); break;
        case Type::IfcStructuralPointReaction: return new IfcStructuralPointReaction(e); break;
        case Type::IfcStructuralProfileProperties: return new IfcStructuralProfileProperties(e); break;
        case Type::IfcStructuralReaction: return new IfcStructuralReaction(e); break;
        case Type::IfcStructuralResultGroup: return new IfcStructuralResultGroup(e); break;
        case Type::IfcStructuralSteelProfileProperties: return new IfcStructuralSteelProfileProperties(e); break;
        case Type::IfcStructuralSurfaceConnection: return new IfcStructuralSurfaceConnection(e); break;
        case Type::IfcStructuralSurfaceMember: return new IfcStructuralSurfaceMember(e); break;
        case Type::IfcStructuralSurfaceMemberVarying: return new IfcStructuralSurfaceMemberVarying(e); break;
        case Type::IfcStructuredDimensionCallout: return new IfcStructuredDimensionCallout(e); break;
        case Type::IfcStyleModel: return new IfcStyleModel(e); break;
        case Type::IfcStyledItem: return new IfcStyledItem(e); break;
        case Type::IfcStyledRepresentation: return new IfcStyledRepresentation(e); break;
        case Type::IfcSubContractResource: return new IfcSubContractResource(e); break;
        case Type::IfcSubedge: return new IfcSubedge(e); break;
        case Type::IfcSurface: return new IfcSurface(e); break;
        case Type::IfcSurfaceCurveSweptAreaSolid: return new IfcSurfaceCurveSweptAreaSolid(e); break;
        case Type::IfcSurfaceOfLinearExtrusion: return new IfcSurfaceOfLinearExtrusion(e); break;
        case Type::IfcSurfaceOfRevolution: return new IfcSurfaceOfRevolution(e); break;
        case Type::IfcSurfaceStyle: return new IfcSurfaceStyle(e); break;
        case Type::IfcSurfaceStyleLighting: return new IfcSurfaceStyleLighting(e); break;
        case Type::IfcSurfaceStyleRefraction: return new IfcSurfaceStyleRefraction(e); break;
        case Type::IfcSurfaceStyleRendering: return new IfcSurfaceStyleRendering(e); break;
        case Type::IfcSurfaceStyleShading: return new IfcSurfaceStyleShading(e); break;
        case Type::IfcSurfaceStyleWithTextures: return new IfcSurfaceStyleWithTextures(e); break;
        case Type::IfcSurfaceTexture: return new IfcSurfaceTexture(e); break;
        case Type::IfcSweptAreaSolid: return new IfcSweptAreaSolid(e); break;
        case Type::IfcSweptDiskSolid: return new IfcSweptDiskSolid(e); break;
        case Type::IfcSweptSurface: return new IfcSweptSurface(e); break;
        case Type::IfcSwitchingDeviceType: return new IfcSwitchingDeviceType(e); break;
        case Type::IfcSymbolStyle: return new IfcSymbolStyle(e); break;
        case Type::IfcSystem: return new IfcSystem(e); break;
        case Type::IfcSystemFurnitureElementType: return new IfcSystemFurnitureElementType(e); break;
        case Type::IfcTShapeProfileDef: return new IfcTShapeProfileDef(e); break;
        case Type::IfcTable: return new IfcTable(e); break;
        case Type::IfcTableRow: return new IfcTableRow(e); break;
        case Type::IfcTankType: return new IfcTankType(e); break;
        case Type::IfcTask: return new IfcTask(e); break;
        case Type::IfcTelecomAddress: return new IfcTelecomAddress(e); break;
        case Type::IfcTendon: return new IfcTendon(e); break;
        case Type::IfcTendonAnchor: return new IfcTendonAnchor(e); break;
        case Type::IfcTerminatorSymbol: return new IfcTerminatorSymbol(e); break;
        case Type::IfcTextLiteral: return new IfcTextLiteral(e); break;
        case Type::IfcTextLiteralWithExtent: return new IfcTextLiteralWithExtent(e); break;
        case Type::IfcTextStyle: return new IfcTextStyle(e); break;
        case Type::IfcTextStyleFontModel: return new IfcTextStyleFontModel(e); break;
        case Type::IfcTextStyleForDefinedFont: return new IfcTextStyleForDefinedFont(e); break;
        case Type::IfcTextStyleTextModel: return new IfcTextStyleTextModel(e); break;
        case Type::IfcTextStyleWithBoxCharacteristics: return new IfcTextStyleWithBoxCharacteristics(e); break;
        case Type::IfcTextureCoordinate: return new IfcTextureCoordinate(e); break;
        case Type::IfcTextureCoordinateGenerator: return new IfcTextureCoordinateGenerator(e); break;
        case Type::IfcTextureMap: return new IfcTextureMap(e); break;
        case Type::IfcTextureVertex: return new IfcTextureVertex(e); break;
        case Type::IfcThermalMaterialProperties: return new IfcThermalMaterialProperties(e); break;
        case Type::IfcTimeSeries: return new IfcTimeSeries(e); break;
        case Type::IfcTimeSeriesReferenceRelationship: return new IfcTimeSeriesReferenceRelationship(e); break;
        case Type::IfcTimeSeriesSchedule: return new IfcTimeSeriesSchedule(e); break;
        case Type::IfcTimeSeriesValue: return new IfcTimeSeriesValue(e); break;
        case Type::IfcTopologicalRepresentationItem: return new IfcTopologicalRepresentationItem(e); break;
        case Type::IfcTopologyRepresentation: return new IfcTopologyRepresentation(e); break;
        case Type::IfcTransformerType: return new IfcTransformerType(e); break;
        case Type::IfcTransportElement: return new IfcTransportElement(e); break;
        case Type::IfcTransportElementType: return new IfcTransportElementType(e); break;
        case Type::IfcTrapeziumProfileDef: return new IfcTrapeziumProfileDef(e); break;
        case Type::IfcTrimmedCurve: return new IfcTrimmedCurve(e); break;
        case Type::IfcTubeBundleType: return new IfcTubeBundleType(e); break;
        case Type::IfcTwoDirectionRepeatFactor: return new IfcTwoDirectionRepeatFactor(e); break;
        case Type::IfcTypeObject: return new IfcTypeObject(e); break;
        case Type::IfcTypeProduct: return new IfcTypeProduct(e); break;
        case Type::IfcUShapeProfileDef: return new IfcUShapeProfileDef(e); break;
        case Type::IfcUnitAssignment: return new IfcUnitAssignment(e); break;
        case Type::IfcUnitaryEquipmentType: return new IfcUnitaryEquipmentType(e); break;
        case Type::IfcValveType: return new IfcValveType(e); break;
        case Type::IfcVector: return new IfcVector(e); break;
        case Type::IfcVertex: return new IfcVertex(e); break;
        case Type::IfcVertexBasedTextureMap: return new IfcVertexBasedTextureMap(e); break;
        case Type::IfcVertexLoop: return new IfcVertexLoop(e); break;
        case Type::IfcVertexPoint: return new IfcVertexPoint(e); break;
        case Type::IfcVibrationIsolatorType: return new IfcVibrationIsolatorType(e); break;
        case Type::IfcVirtualElement: return new IfcVirtualElement(e); break;
        case Type::IfcVirtualGridIntersection: return new IfcVirtualGridIntersection(e); break;
        case Type::IfcWall: return new IfcWall(e); break;
        case Type::IfcWallStandardCase: return new IfcWallStandardCase(e); break;
        case Type::IfcWallType: return new IfcWallType(e); break;
        case Type::IfcWasteTerminalType: return new IfcWasteTerminalType(e); break;
        case Type::IfcWaterProperties: return new IfcWaterProperties(e); break;
        case Type::IfcWindow: return new IfcWindow(e); break;
        case Type::IfcWindowLiningProperties: return new IfcWindowLiningProperties(e); break;
        case Type::IfcWindowPanelProperties: return new IfcWindowPanelProperties(e); break;
        case Type::IfcWindowStyle: return new IfcWindowStyle(e); break;
        case Type::IfcWorkControl: return new IfcWorkControl(e); break;
        case Type::IfcWorkPlan: return new IfcWorkPlan(e); break;
        case Type::IfcWorkSchedule: return new IfcWorkSchedule(e); break;
        case Type::IfcZShapeProfileDef: return new IfcZShapeProfileDef(e); break;
        case Type::IfcZone: return new IfcZone(e); break;
        default: throw IfcException("Unable to find find keyword in schema"); break;
    }
}

std::string Type::ToString(Enum v) {
    if (v < 0 || v >= 980) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "Ifc2DCompositeCurve", "IfcAbsorbedDoseMeasure", "IfcAccelerationMeasure", "IfcActionRequest", "IfcActionSourceTypeEnum", "IfcActionTypeEnum", "IfcActor", "IfcActorRole", "IfcActorSelect", "IfcActuatorType", "IfcActuatorTypeEnum", "IfcAddress", "IfcAddressTypeEnum", "IfcAheadOrBehind", "IfcAirTerminalBoxType", "IfcAirTerminalBoxTypeEnum", "IfcAirTerminalType", "IfcAirTerminalTypeEnum", "IfcAirToAirHeatRecoveryType", "IfcAirToAirHeatRecoveryTypeEnum", "IfcAlarmType", "IfcAlarmTypeEnum", "IfcAmountOfSubstanceMeasure", "IfcAnalysisModelTypeEnum", "IfcAnalysisTheoryTypeEnum", "IfcAngularDimension", "IfcAngularVelocityMeasure", "IfcAnnotation", "IfcAnnotationCurveOccurrence", "IfcAnnotationFillArea", "IfcAnnotationFillAreaOccurrence", "IfcAnnotationOccurrence", "IfcAnnotationSurface", "IfcAnnotationSurfaceOccurrence", "IfcAnnotationSymbolOccurrence", "IfcAnnotationTextOccurrence", "IfcApplication", "IfcAppliedValue", "IfcAppliedValueRelationship", "IfcAppliedValueSelect", "IfcApproval", "IfcApprovalActorRelationship", "IfcApprovalPropertyRelationship", "IfcApprovalRelationship", "IfcArbitraryClosedProfileDef", "IfcArbitraryOpenProfileDef", "IfcArbitraryProfileDefWithVoids", "IfcAreaMeasure", "IfcArithmeticOperatorEnum", "IfcAssemblyPlaceEnum", "IfcAsset", "IfcAsymmetricIShapeProfileDef", "IfcAxis1Placement", "IfcAxis2Placement", "IfcAxis2Placement2D", "IfcAxis2Placement3D", "IfcBeam", "IfcBeamType", "IfcBeamTypeEnum", "IfcBenchmarkEnum", "IfcBezierCurve", "IfcBlobTexture", "IfcBlock", "IfcBoilerType", "IfcBoilerTypeEnum", "IfcBoolean", "IfcBooleanClippingResult", "IfcBooleanOperand", "IfcBooleanOperator", "IfcBooleanResult", "IfcBoundaryCondition", "IfcBoundaryEdgeCondition", "IfcBoundaryFaceCondition", "IfcBoundaryNodeCondition", "IfcBoundaryNodeConditionWarping", "IfcBoundedCurve", "IfcBoundedSurface", "IfcBoundingBox", "IfcBoxAlignment", "IfcBoxedHalfSpace", "IfcBSplineCurve", "IfcBSplineCurveForm", "IfcBuilding", "IfcBuildingElement", "IfcBuildingElementComponent", "IfcBuildingElementPart", "IfcBuildingElementProxy", "IfcBuildingElementProxyType", "IfcBuildingElementProxyTypeEnum", "IfcBuildingElementType", "IfcBuildingStorey", "IfcCableCarrierFittingType", "IfcCableCarrierFittingTypeEnum", "IfcCableCarrierSegmentType", "IfcCableCarrierSegmentTypeEnum", "IfcCableSegmentType", "IfcCableSegmentTypeEnum", "IfcCalendarDate", "IfcCartesianPoint", "IfcCartesianTransformationOperator", "IfcCartesianTransformationOperator2D", "IfcCartesianTransformationOperator2DnonUniform", "IfcCartesianTransformationOperator3D", "IfcCartesianTransformationOperator3DnonUniform", "IfcCenterLineProfileDef", "IfcChamferEdgeFeature", "IfcChangeActionEnum", "IfcCharacterStyleSelect", "IfcChillerType", "IfcChillerTypeEnum", "IfcCircle", "IfcCircleHollowProfileDef", "IfcCircleProfileDef", "IfcClassification", "IfcClassificationItem", "IfcClassificationItemRelationship", "IfcClassificationNotation", "IfcClassificationNotationFacet", "IfcClassificationNotationSelect", "IfcClassificationReference", "IfcClosedShell", "IfcCoilType", "IfcCoilTypeEnum", "IfcColour", "IfcColourOrFactor", "IfcColourRgb", "IfcColourSpecification", "IfcColumn", "IfcColumnType", "IfcColumnTypeEnum", "IfcComplexNumber", "IfcComplexProperty", "IfcCompositeCurve", "IfcCompositeCurveSegment", "IfcCompositeProfileDef", "IfcCompoundPlaneAngleMeasure", "IfcCompressorType", "IfcCompressorTypeEnum", "IfcCondenserType", "IfcCondenserTypeEnum", "IfcCondition", "IfcConditionCriterion", "IfcConditionCriterionSelect", "IfcConic", "IfcConnectedFaceSet", "IfcConnectionCurveGeometry", "IfcConnectionGeometry", "IfcConnectionPointEccentricity", "IfcConnectionPointGeometry", "IfcConnectionPortGeometry", "IfcConnectionSurfaceGeometry", "IfcConnectionTypeEnum", "IfcConstraint", "IfcConstraintAggregationRelationship", "IfcConstraintClassificationRelationship", "IfcConstraintEnum", "IfcConstraintRelationship", "IfcConstructionEquipmentResource", "IfcConstructionMaterialResource", "IfcConstructionProductResource", "IfcConstructionResource", "IfcContextDependentMeasure", "IfcContextDependentUnit", "IfcControl", "IfcControllerType", "IfcControllerTypeEnum", "IfcConversionBasedUnit", "IfcCooledBeamType", "IfcCooledBeamTypeEnum", "IfcCoolingTowerType", "IfcCoolingTowerTypeEnum", "IfcCoordinatedUniversalTimeOffset", "IfcCostItem", "IfcCostSchedule", "IfcCostScheduleTypeEnum", "IfcCostValue", "IfcCountMeasure", "IfcCovering", "IfcCoveringType", "IfcCoveringTypeEnum", "IfcCraneRailAShapeProfileDef", "IfcCraneRailFShapeProfileDef", "IfcCrewResource", "IfcCsgPrimitive3D", "IfcCsgSelect", "IfcCsgSolid", "IfcCShapeProfileDef", "IfcCurrencyEnum", "IfcCurrencyRelationship", "IfcCurtainWall", "IfcCurtainWallType", "IfcCurtainWallTypeEnum", "IfcCurvatureMeasure", "IfcCurve", "IfcCurveBoundedPlane", "IfcCurveFontOrScaledCurveFontSelect", "IfcCurveOrEdgeCurve", "IfcCurveStyle", "IfcCurveStyleFont", "IfcCurveStyleFontAndScaling", "IfcCurveStyleFontPattern", "IfcCurveStyleFontSelect", "IfcDamperType", "IfcDamperTypeEnum", "IfcDataOriginEnum", "IfcDateAndTime", "IfcDateTimeSelect", "IfcDayInMonthNumber", "IfcDaylightSavingHour", "IfcDefinedSymbol", "IfcDefinedSymbolSelect", "IfcDerivedMeasureValue", "IfcDerivedProfileDef", "IfcDerivedUnit", "IfcDerivedUnitElement", "IfcDerivedUnitEnum", "IfcDescriptiveMeasure", "IfcDiameterDimension", "IfcDimensionalExponents", "IfcDimensionCalloutRelationship", "IfcDimensionCount", "IfcDimensionCurve", "IfcDimensionCurveDirectedCallout", "IfcDimensionCurveTerminator", "IfcDimensionExtentUsage", "IfcDimensionPair", "IfcDirection", "IfcDirectionSenseEnum", "IfcDiscreteAccessory", "IfcDiscreteAccessoryType", "IfcDistributionChamberElement", "IfcDistributionChamberElementType", "IfcDistributionChamberElementTypeEnum", "IfcDistributionControlElement", "IfcDistributionControlElementType", "IfcDistributionElement", "IfcDistributionElementType", "IfcDistributionFlowElement", "IfcDistributionFlowElementType", "IfcDistributionPort", "IfcDocumentConfidentialityEnum", "IfcDocumentElectronicFormat", "IfcDocumentInformation", "IfcDocumentInformationRelationship", "IfcDocumentReference", "IfcDocumentSelect", "IfcDocumentStatusEnum", "IfcDoor", "IfcDoorLiningProperties", "IfcDoorPanelOperationEnum", "IfcDoorPanelPositionEnum", "IfcDoorPanelProperties", "IfcDoorStyle", "IfcDoorStyleConstructionEnum", "IfcDoorStyleOperationEnum", "IfcDoseEquivalentMeasure", "IfcDraughtingCallout", "IfcDraughtingCalloutElement", "IfcDraughtingCalloutRelationship", "IfcDraughtingPreDefinedColour", "IfcDraughtingPreDefinedCurveFont", "IfcDraughtingPreDefinedTextFont", "IfcDuctFittingType", "IfcDuctFittingTypeEnum", "IfcDuctSegmentType", "IfcDuctSegmentTypeEnum", "IfcDuctSilencerType", "IfcDuctSilencerTypeEnum", "IfcDynamicViscosityMeasure", "IfcEdge", "IfcEdgeCurve", "IfcEdgeFeature", "IfcEdgeLoop", "IfcElectricalBaseProperties", "IfcElectricalCircuit", "IfcElectricalElement", "IfcElectricApplianceType", "IfcElectricApplianceTypeEnum", "IfcElectricCapacitanceMeasure", "IfcElectricChargeMeasure", "IfcElectricConductanceMeasure", "IfcElectricCurrentEnum", "IfcElectricCurrentMeasure", "IfcElectricDistributionPoint", "IfcElectricDistributionPointFunctionEnum", "IfcElectricFlowStorageDeviceType", "IfcElectricFlowStorageDeviceTypeEnum", "IfcElectricGeneratorType", "IfcElectricGeneratorTypeEnum", "IfcElectricHeaterType", "IfcElectricHeaterTypeEnum", "IfcElectricMotorType", "IfcElectricMotorTypeEnum", "IfcElectricResistanceMeasure", "IfcElectricTimeControlType", "IfcElectricTimeControlTypeEnum", "IfcElectricVoltageMeasure", "IfcElement", "IfcElementarySurface", "IfcElementAssembly", "IfcElementAssemblyTypeEnum", "IfcElementComponent", "IfcElementComponentType", "IfcElementCompositionEnum", "IfcElementQuantity", "IfcElementType", "IfcEllipse", "IfcEllipseProfileDef", "IfcEnergyConversionDevice", "IfcEnergyConversionDeviceType", "IfcEnergyMeasure", "IfcEnergyProperties", "IfcEnergySequenceEnum", "IfcEnvironmentalImpactCategoryEnum", "IfcEnvironmentalImpactValue", "IfcEquipmentElement", "IfcEquipmentStandard", "IfcEvaporativeCoolerType", "IfcEvaporativeCoolerTypeEnum", "IfcEvaporatorType", "IfcEvaporatorTypeEnum", "IfcExtendedMaterialProperties", "IfcExternallyDefinedHatchStyle", "IfcExternallyDefinedSurfaceStyle", "IfcExternallyDefinedSymbol", "IfcExternallyDefinedTextFont", "IfcExternalReference", "IfcExtrudedAreaSolid", "IfcFace", "IfcFaceBasedSurfaceModel", "IfcFaceBound", "IfcFaceOuterBound", "IfcFaceSurface", "IfcFacetedBrep", "IfcFacetedBrepWithVoids", "IfcFailureConnectionCondition", "IfcFanType", "IfcFanTypeEnum", "IfcFastener", "IfcFastenerType", "IfcFeatureElement", "IfcFeatureElementAddition", "IfcFeatureElementSubtraction", "IfcFillAreaStyle", "IfcFillAreaStyleHatching", "IfcFillAreaStyleTiles", "IfcFillAreaStyleTileShapeSelect", "IfcFillAreaStyleTileSymbolWithStyle", "IfcFillStyleSelect", "IfcFilterType", "IfcFilterTypeEnum", "IfcFireSuppressionTerminalType", "IfcFireSuppressionTerminalTypeEnum", "IfcFlowController", "IfcFlowControllerType", "IfcFlowDirectionEnum", "IfcFlowFitting", "IfcFlowFittingType", "IfcFlowInstrumentType", "IfcFlowInstrumentTypeEnum", "IfcFlowMeterType", "IfcFlowMeterTypeEnum", "IfcFlowMovingDevice", "IfcFlowMovingDeviceType", "IfcFlowSegment", "IfcFlowSegmentType", "IfcFlowStorageDevice", "IfcFlowStorageDeviceType", "IfcFlowTerminal", "IfcFlowTerminalType", "IfcFlowTreatmentDevice", "IfcFlowTreatmentDeviceType", "IfcFluidFlowProperties", "IfcFontStyle", "IfcFontVariant", "IfcFontWeight", "IfcFooting", "IfcFootingTypeEnum", "IfcForceMeasure", "IfcFrequencyMeasure", "IfcFuelProperties", "IfcFurnishingElement", "IfcFurnishingElementType", "IfcFurnitureStandard", "IfcFurnitureType", "IfcGasTerminalType", "IfcGasTerminalTypeEnum", "IfcGeneralMaterialProperties", "IfcGeneralProfileProperties", "IfcGeometricCurveSet", "IfcGeometricProjectionEnum", "IfcGeometricRepresentationContext", "IfcGeometricRepresentationItem", "IfcGeometricRepresentationSubContext", "IfcGeometricSet", "IfcGeometricSetSelect", "IfcGloballyUniqueId", "IfcGlobalOrLocalEnum", "IfcGrid", "IfcGridAxis", "IfcGridPlacement", "IfcGroup", "IfcHalfSpaceSolid", "IfcHatchLineDistanceSelect", "IfcHeatExchangerType", "IfcHeatExchangerTypeEnum", "IfcHeatFluxDensityMeasure", "IfcHeatingValueMeasure", "IfcHourInDay", "IfcHumidifierType", "IfcHumidifierTypeEnum", "IfcHygroscopicMaterialProperties", "IfcIdentifier", "IfcIlluminanceMeasure", "IfcImageTexture", "IfcInductanceMeasure", "IfcInteger", "IfcIntegerCountRateMeasure", "IfcInternalOrExternalEnum", "IfcInventory", "IfcInventoryTypeEnum", "IfcIonConcentrationMeasure", "IfcIrregularTimeSeries", "IfcIrregularTimeSeriesValue", "IfcIShapeProfileDef", "IfcIsothermalMoistureCapacityMeasure", "IfcJunctionBoxType", "IfcJunctionBoxTypeEnum", "IfcKinematicViscosityMeasure", "IfcLabel", "IfcLaborResource", "IfcLampType", "IfcLampTypeEnum", "IfcLayeredItem", "IfcLayerSetDirectionEnum", "IfcLengthMeasure", "IfcLibraryInformation", "IfcLibraryReference", "IfcLibrarySelect", "IfcLightDistributionCurveEnum", "IfcLightDistributionData", "IfcLightDistributionDataSourceSelect", "IfcLightEmissionSourceEnum", "IfcLightFixtureType", "IfcLightFixtureTypeEnum", "IfcLightIntensityDistribution", "IfcLightSource", "IfcLightSourceAmbient", "IfcLightSourceDirectional", "IfcLightSourceGoniometric", "IfcLightSourcePositional", "IfcLightSourceSpot", "IfcLine", "IfcLinearDimension", "IfcLinearForceMeasure", "IfcLinearMomentMeasure", "IfcLinearStiffnessMeasure", "IfcLinearVelocityMeasure", "IfcLoadGroupTypeEnum", "IfcLocalPlacement", "IfcLocalTime", "IfcLogical", "IfcLogicalOperatorEnum", "IfcLoop", "IfcLShapeProfileDef", "IfcLuminousFluxMeasure", "IfcLuminousIntensityDistributionMeasure", "IfcLuminousIntensityMeasure", "IfcMagneticFluxDensityMeasure", "IfcMagneticFluxMeasure", "IfcManifoldSolidBrep", "IfcMappedItem", "IfcMassDensityMeasure", "IfcMassFlowRateMeasure", "IfcMassMeasure", "IfcMassPerLengthMeasure", "IfcMaterial", "IfcMaterialClassificationRelationship", "IfcMaterialDefinitionRepresentation", "IfcMaterialLayer", "IfcMaterialLayerSet", "IfcMaterialLayerSetUsage", "IfcMaterialList", "IfcMaterialProperties", "IfcMaterialSelect", "IfcMeasureValue", "IfcMeasureWithUnit", "IfcMechanicalConcreteMaterialProperties", "IfcMechanicalFastener", "IfcMechanicalFastenerType", "IfcMechanicalMaterialProperties", "IfcMechanicalSteelMaterialProperties", "IfcMember", "IfcMemberType", "IfcMemberTypeEnum", "IfcMetric", "IfcMetricValueSelect", "IfcMinuteInHour", "IfcModulusOfElasticityMeasure", "IfcModulusOfLinearSubgradeReactionMeasure", "IfcModulusOfRotationalSubgradeReactionMeasure", "IfcModulusOfSubgradeReactionMeasure", "IfcMoistureDiffusivityMeasure", "IfcMolecularWeightMeasure", "IfcMomentOfInertiaMeasure", "IfcMonetaryMeasure", "IfcMonetaryUnit", "IfcMonthInYearNumber", "IfcMotorConnectionType", "IfcMotorConnectionTypeEnum", "IfcMove", "IfcNamedUnit", "IfcNormalisedRatioMeasure", "IfcNullStyle", "IfcNumericMeasure", "IfcObject", "IfcObjectDefinition", "IfcObjective", "IfcObjectiveEnum", "IfcObjectPlacement", "IfcObjectReferenceSelect", "IfcObjectTypeEnum", "IfcOccupant", "IfcOccupantTypeEnum", "IfcOffsetCurve2D", "IfcOffsetCurve3D", "IfcOneDirectionRepeatFactor", "IfcOpeningElement", "IfcOpenShell", "IfcOpticalMaterialProperties", "IfcOrderAction", "IfcOrganization", "IfcOrganizationRelationship", "IfcOrientationSelect", "IfcOrientedEdge", "IfcOutletType", "IfcOutletTypeEnum", "IfcOwnerHistory", "IfcParameterizedProfileDef", "IfcParameterValue", "IfcPath", "IfcPerformanceHistory", "IfcPermeableCoveringOperationEnum", "IfcPermeableCoveringProperties", "IfcPermit", "IfcPerson", "IfcPersonAndOrganization", "IfcPHMeasure", "IfcPhysicalComplexQuantity", "IfcPhysicalOrVirtualEnum", "IfcPhysicalQuantity", "IfcPhysicalSimpleQuantity", "IfcPile", "IfcPileConstructionEnum", "IfcPileTypeEnum", "IfcPipeFittingType", "IfcPipeFittingTypeEnum", "IfcPipeSegmentType", "IfcPipeSegmentTypeEnum", "IfcPixelTexture", "IfcPlacement", "IfcPlanarBox", "IfcPlanarExtent", "IfcPlanarForceMeasure", "IfcPlane", "IfcPlaneAngleMeasure", "IfcPlate", "IfcPlateType", "IfcPlateTypeEnum", "IfcPoint", "IfcPointOnCurve", "IfcPointOnSurface", "IfcPointOrVertexPoint", "IfcPolygonalBoundedHalfSpace", "IfcPolyline", "IfcPolyLoop", "IfcPort", "IfcPositiveLengthMeasure", "IfcPositivePlaneAngleMeasure", "IfcPositiveRatioMeasure", "IfcPostalAddress", "IfcPowerMeasure", "IfcPreDefinedColour", "IfcPreDefinedCurveFont", "IfcPreDefinedDimensionSymbol", "IfcPreDefinedItem", "IfcPreDefinedPointMarkerSymbol", "IfcPreDefinedSymbol", "IfcPreDefinedTerminatorSymbol", "IfcPreDefinedTextFont", "IfcPresentableText", "IfcPresentationLayerAssignment", "IfcPresentationLayerWithStyle", "IfcPresentationStyle", "IfcPresentationStyleAssignment", "IfcPresentationStyleSelect", "IfcPressureMeasure", "IfcProcedure", "IfcProcedureTypeEnum", "IfcProcess", "IfcProduct", "IfcProductDefinitionShape", "IfcProductRepresentation", "IfcProductsOfCombustionProperties", "IfcProfileDef", "IfcProfileProperties", "IfcProfileTypeEnum", "IfcProject", "IfcProjectedOrTrueLengthEnum", "IfcProjectionCurve", "IfcProjectionElement", "IfcProjectOrder", "IfcProjectOrderRecord", "IfcProjectOrderRecordTypeEnum", "IfcProjectOrderTypeEnum", "IfcProperty", "IfcPropertyBoundedValue", "IfcPropertyConstraintRelationship", "IfcPropertyDefinition", "IfcPropertyDependencyRelationship", "IfcPropertyEnumeratedValue", "IfcPropertyEnumeration", "IfcPropertyListValue", "IfcPropertyReferenceValue", "IfcPropertySet", "IfcPropertySetDefinition", "IfcPropertySingleValue", "IfcPropertySourceEnum", "IfcPropertyTableValue", "IfcProtectiveDeviceType", "IfcProtectiveDeviceTypeEnum", "IfcProxy", "IfcPumpType", "IfcPumpTypeEnum", "IfcQuantityArea", "IfcQuantityCount", "IfcQuantityLength", "IfcQuantityTime", "IfcQuantityVolume", "IfcQuantityWeight", "IfcRadioActivityMeasure", "IfcRadiusDimension", "IfcRailing", "IfcRailingType", "IfcRailingTypeEnum", "IfcRamp", "IfcRampFlight", "IfcRampFlightType", "IfcRampFlightTypeEnum", "IfcRampTypeEnum", "IfcRatioMeasure", "IfcRationalBezierCurve", "IfcReal", "IfcRectangleHollowProfileDef", "IfcRectangleProfileDef", "IfcRectangularPyramid", "IfcRectangularTrimmedSurface", "IfcReferencesValueDocument", "IfcReflectanceMethodEnum", "IfcRegularTimeSeries", "IfcReinforcementBarProperties", "IfcReinforcementDefinitionProperties", "IfcReinforcingBar", "IfcReinforcingBarRoleEnum", "IfcReinforcingBarSurfaceEnum", "IfcReinforcingElement", "IfcReinforcingMesh", "IfcRelAggregates", "IfcRelAssigns", "IfcRelAssignsTasks", "IfcRelAssignsToActor", "IfcRelAssignsToControl", "IfcRelAssignsToGroup", "IfcRelAssignsToProcess", "IfcRelAssignsToProduct", "IfcRelAssignsToProjectOrder", "IfcRelAssignsToResource", "IfcRelAssociates", "IfcRelAssociatesAppliedValue", "IfcRelAssociatesApproval", "IfcRelAssociatesClassification", "IfcRelAssociatesConstraint", "IfcRelAssociatesDocument", "IfcRelAssociatesLibrary", "IfcRelAssociatesMaterial", "IfcRelAssociatesProfileProperties", "IfcRelationship", "IfcRelaxation", "IfcRelConnects", "IfcRelConnectsElements", "IfcRelConnectsPathElements", "IfcRelConnectsPorts", "IfcRelConnectsPortToElement", "IfcRelConnectsStructuralActivity", "IfcRelConnectsStructuralElement", "IfcRelConnectsStructuralMember", "IfcRelConnectsWithEccentricity", "IfcRelConnectsWithRealizingElements", "IfcRelContainedInSpatialStructure", "IfcRelCoversBldgElements", "IfcRelCoversSpaces", "IfcRelDecomposes", "IfcRelDefines", "IfcRelDefinesByProperties", "IfcRelDefinesByType", "IfcRelFillsElement", "IfcRelFlowControlElements", "IfcRelInteractionRequirements", "IfcRelNests", "IfcRelOccupiesSpaces", "IfcRelOverridesProperties", "IfcRelProjectsElement", "IfcRelReferencedInSpatialStructure", "IfcRelSchedulesCostItems", "IfcRelSequence", "IfcRelServicesBuildings", "IfcRelSpaceBoundary", "IfcRelVoidsElement", "IfcRepresentation", "IfcRepresentationContext", "IfcRepresentationItem", "IfcRepresentationMap", "IfcResource", "IfcResourceConsumptionEnum", "IfcRevolvedAreaSolid", "IfcRibPlateDirectionEnum", "IfcRibPlateProfileProperties", "IfcRightCircularCone", "IfcRightCircularCylinder", "IfcRoleEnum", "IfcRoof", "IfcRoofTypeEnum", "IfcRoot", "IfcRotationalFrequencyMeasure", "IfcRotationalMassMeasure", "IfcRotationalStiffnessMeasure", "IfcRoundedEdgeFeature", "IfcRoundedRectangleProfileDef", "IfcSanitaryTerminalType", "IfcSanitaryTerminalTypeEnum", "IfcScheduleTimeControl", "IfcSecondInMinute", "IfcSectionalAreaIntegralMeasure", "IfcSectionedSpine", "IfcSectionModulusMeasure", "IfcSectionProperties", "IfcSectionReinforcementProperties", "IfcSectionTypeEnum", "IfcSensorType", "IfcSensorTypeEnum", "IfcSequenceEnum", "IfcServiceLife", "IfcServiceLifeFactor", "IfcServiceLifeFactorTypeEnum", "IfcServiceLifeTypeEnum", "IfcShapeAspect", "IfcShapeModel", "IfcShapeRepresentation", "IfcShearModulusMeasure", "IfcShell", "IfcShellBasedSurfaceModel", "IfcSimpleProperty", "IfcSimpleValue", "IfcSIPrefix", "IfcSite", "IfcSIUnit", "IfcSIUnitName", "IfcSizeSelect", "IfcSlab", "IfcSlabType", "IfcSlabTypeEnum", "IfcSlippageConnectionCondition", "IfcSolidAngleMeasure", "IfcSolidModel", "IfcSoundPowerMeasure", "IfcSoundPressureMeasure", "IfcSoundProperties", "IfcSoundScaleEnum", "IfcSoundValue", "IfcSpace", "IfcSpaceHeaterType", "IfcSpaceHeaterTypeEnum", "IfcSpaceProgram", "IfcSpaceThermalLoadProperties", "IfcSpaceType", "IfcSpaceTypeEnum", "IfcSpatialStructureElement", "IfcSpatialStructureElementType", "IfcSpecificHeatCapacityMeasure", "IfcSpecularExponent", "IfcSpecularHighlightSelect", "IfcSpecularRoughness", "IfcSphere", "IfcStackTerminalType", "IfcStackTerminalTypeEnum", "IfcStair", "IfcStairFlight", "IfcStairFlightType", "IfcStairFlightTypeEnum", "IfcStairTypeEnum", "IfcStateEnum", "IfcStructuralAction", "IfcStructuralActivity", "IfcStructuralActivityAssignmentSelect", "IfcStructuralAnalysisModel", "IfcStructuralConnection", "IfcStructuralConnectionCondition", "IfcStructuralCurveConnection", "IfcStructuralCurveMember", "IfcStructuralCurveMemberVarying", "IfcStructuralCurveTypeEnum", "IfcStructuralItem", "IfcStructuralLinearAction", "IfcStructuralLinearActionVarying", "IfcStructuralLoad", "IfcStructuralLoadGroup", "IfcStructuralLoadLinearForce", "IfcStructuralLoadPlanarForce", "IfcStructuralLoadSingleDisplacement", "IfcStructuralLoadSingleDisplacementDistortion", "IfcStructuralLoadSingleForce", "IfcStructuralLoadSingleForceWarping", "IfcStructuralLoadStatic", "IfcStructuralLoadTemperature", "IfcStructuralMember", "IfcStructuralPlanarAction", "IfcStructuralPlanarActionVarying", "IfcStructuralPointAction", "IfcStructuralPointConnection", "IfcStructuralPointReaction", "IfcStructuralProfileProperties", "IfcStructuralReaction", "IfcStructuralResultGroup", "IfcStructuralSteelProfileProperties", "IfcStructuralSurfaceConnection", "IfcStructuralSurfaceMember", "IfcStructuralSurfaceMemberVarying", "IfcStructuralSurfaceTypeEnum", "IfcStructuredDimensionCallout", "IfcStyledItem", "IfcStyledRepresentation", "IfcStyleModel", "IfcSubContractResource", "IfcSubedge", "IfcSurface", "IfcSurfaceCurveSweptAreaSolid", "IfcSurfaceOfLinearExtrusion", "IfcSurfaceOfRevolution", "IfcSurfaceOrFaceSurface", "IfcSurfaceSide", "IfcSurfaceStyle", "IfcSurfaceStyleElementSelect", "IfcSurfaceStyleLighting", "IfcSurfaceStyleRefraction", "IfcSurfaceStyleRendering", "IfcSurfaceStyleShading", "IfcSurfaceStyleWithTextures", "IfcSurfaceTexture", "IfcSurfaceTextureEnum", "IfcSweptAreaSolid", "IfcSweptDiskSolid", "IfcSweptSurface", "IfcSwitchingDeviceType", "IfcSwitchingDeviceTypeEnum", "IfcSymbolStyle", "IfcSymbolStyleSelect", "IfcSystem", "IfcSystemFurnitureElementType", "IfcTable", "IfcTableRow", "IfcTankType", "IfcTankTypeEnum", "IfcTask", "IfcTelecomAddress", "IfcTemperatureGradientMeasure", "IfcTendon", "IfcTendonAnchor", "IfcTendonTypeEnum", "IfcTerminatorSymbol", "IfcText", "IfcTextAlignment", "IfcTextDecoration", "IfcTextFontName", "IfcTextFontSelect", "IfcTextLiteral", "IfcTextLiteralWithExtent", "IfcTextPath", "IfcTextStyle", "IfcTextStyleFontModel", "IfcTextStyleForDefinedFont", "IfcTextStyleSelect", "IfcTextStyleTextModel", "IfcTextStyleWithBoxCharacteristics", "IfcTextTransformation", "IfcTextureCoordinate", "IfcTextureCoordinateGenerator", "IfcTextureMap", "IfcTextureVertex", "IfcThermalAdmittanceMeasure", "IfcThermalConductivityMeasure", "IfcThermalExpansionCoefficientMeasure", "IfcThermalLoadSourceEnum", "IfcThermalLoadTypeEnum", "IfcThermalMaterialProperties", "IfcThermalResistanceMeasure", "IfcThermalTransmittanceMeasure", "IfcThermodynamicTemperatureMeasure", "IfcTimeMeasure", "IfcTimeSeries", "IfcTimeSeriesDataTypeEnum", "IfcTimeSeriesReferenceRelationship", "IfcTimeSeriesSchedule", "IfcTimeSeriesScheduleTypeEnum", "IfcTimeSeriesValue", "IfcTimeStamp", "IfcTopologicalRepresentationItem", "IfcTopologyRepresentation", "IfcTorqueMeasure", "IfcTransformerType", "IfcTransformerTypeEnum", "IfcTransitionCode", "IfcTransportElement", "IfcTransportElementType", "IfcTransportElementTypeEnum", "IfcTrapeziumProfileDef", "IfcTrimmedCurve", "IfcTrimmingPreference", "IfcTrimmingSelect", "IfcTShapeProfileDef", "IfcTubeBundleType", "IfcTubeBundleTypeEnum", "IfcTwoDirectionRepeatFactor", "IfcTypeObject", "IfcTypeProduct", "IfcUnit", "IfcUnitaryEquipmentType", "IfcUnitaryEquipmentTypeEnum", "IfcUnitAssignment", "IfcUnitEnum", "IfcUShapeProfileDef", "IfcValue", "IfcValveType", "IfcValveTypeEnum", "IfcVaporPermeabilityMeasure", "IfcVector", "IfcVectorOrDirection", "IfcVertex", "IfcVertexBasedTextureMap", "IfcVertexLoop", "IfcVertexPoint", "IfcVibrationIsolatorType", "IfcVibrationIsolatorTypeEnum", "IfcVirtualElement", "IfcVirtualGridIntersection", "IfcVolumeMeasure", "IfcVolumetricFlowRateMeasure", "IfcWall", "IfcWallStandardCase", "IfcWallType", "IfcWallTypeEnum", "IfcWarpingConstantMeasure", "IfcWarpingMomentMeasure", "IfcWasteTerminalType", "IfcWasteTerminalTypeEnum", "IfcWaterProperties", "IfcWindow", "IfcWindowLiningProperties", "IfcWindowPanelOperationEnum", "IfcWindowPanelPositionEnum", "IfcWindowPanelProperties", "IfcWindowStyle", "IfcWindowStyleConstructionEnum", "IfcWindowStyleOperationEnum", "IfcWorkControl", "IfcWorkControlTypeEnum", "IfcWorkPlan", "IfcWorkSchedule", "IfcYearNumber", "IfcZone", "IfcZShapeProfileDef" };
    return names[v];
}

static std::map<std::string,Type::Enum> string_map;
void Ifc2x3::InitStringMap() {
    string_map["IFC2DCOMPOSITECURVE"                           ] = Type::Ifc2DCompositeCurve;
    string_map["IFCABSORBEDDOSEMEASURE"                        ] = Type::IfcAbsorbedDoseMeasure;
    string_map["IFCACCELERATIONMEASURE"                        ] = Type::IfcAccelerationMeasure;
    string_map["IFCACTIONREQUEST"                              ] = Type::IfcActionRequest;
    string_map["IFCACTIONSOURCETYPEENUM"                       ] = Type::IfcActionSourceTypeEnum;
    string_map["IFCACTIONTYPEENUM"                             ] = Type::IfcActionTypeEnum;
    string_map["IFCACTOR"                                      ] = Type::IfcActor;
    string_map["IFCACTORROLE"                                  ] = Type::IfcActorRole;
    string_map["IFCACTORSELECT"                                ] = Type::IfcActorSelect;
    string_map["IFCACTUATORTYPE"                               ] = Type::IfcActuatorType;
    string_map["IFCACTUATORTYPEENUM"                           ] = Type::IfcActuatorTypeEnum;
    string_map["IFCADDRESS"                                    ] = Type::IfcAddress;
    string_map["IFCADDRESSTYPEENUM"                            ] = Type::IfcAddressTypeEnum;
    string_map["IFCAHEADORBEHIND"                              ] = Type::IfcAheadOrBehind;
    string_map["IFCAIRTERMINALBOXTYPE"                         ] = Type::IfcAirTerminalBoxType;
    string_map["IFCAIRTERMINALBOXTYPEENUM"                     ] = Type::IfcAirTerminalBoxTypeEnum;
    string_map["IFCAIRTERMINALTYPE"                            ] = Type::IfcAirTerminalType;
    string_map["IFCAIRTERMINALTYPEENUM"                        ] = Type::IfcAirTerminalTypeEnum;
    string_map["IFCAIRTOAIRHEATRECOVERYTYPE"                   ] = Type::IfcAirToAirHeatRecoveryType;
    string_map["IFCAIRTOAIRHEATRECOVERYTYPEENUM"               ] = Type::IfcAirToAirHeatRecoveryTypeEnum;
    string_map["IFCALARMTYPE"                                  ] = Type::IfcAlarmType;
    string_map["IFCALARMTYPEENUM"                              ] = Type::IfcAlarmTypeEnum;
    string_map["IFCAMOUNTOFSUBSTANCEMEASURE"                   ] = Type::IfcAmountOfSubstanceMeasure;
    string_map["IFCANALYSISMODELTYPEENUM"                      ] = Type::IfcAnalysisModelTypeEnum;
    string_map["IFCANALYSISTHEORYTYPEENUM"                     ] = Type::IfcAnalysisTheoryTypeEnum;
    string_map["IFCANGULARDIMENSION"                           ] = Type::IfcAngularDimension;
    string_map["IFCANGULARVELOCITYMEASURE"                     ] = Type::IfcAngularVelocityMeasure;
    string_map["IFCANNOTATION"                                 ] = Type::IfcAnnotation;
    string_map["IFCANNOTATIONCURVEOCCURRENCE"                  ] = Type::IfcAnnotationCurveOccurrence;
    string_map["IFCANNOTATIONFILLAREA"                         ] = Type::IfcAnnotationFillArea;
    string_map["IFCANNOTATIONFILLAREAOCCURRENCE"               ] = Type::IfcAnnotationFillAreaOccurrence;
    string_map["IFCANNOTATIONOCCURRENCE"                       ] = Type::IfcAnnotationOccurrence;
    string_map["IFCANNOTATIONSURFACE"                          ] = Type::IfcAnnotationSurface;
    string_map["IFCANNOTATIONSURFACEOCCURRENCE"                ] = Type::IfcAnnotationSurfaceOccurrence;
    string_map["IFCANNOTATIONSYMBOLOCCURRENCE"                 ] = Type::IfcAnnotationSymbolOccurrence;
    string_map["IFCANNOTATIONTEXTOCCURRENCE"                   ] = Type::IfcAnnotationTextOccurrence;
    string_map["IFCAPPLICATION"                                ] = Type::IfcApplication;
    string_map["IFCAPPLIEDVALUE"                               ] = Type::IfcAppliedValue;
    string_map["IFCAPPLIEDVALUERELATIONSHIP"                   ] = Type::IfcAppliedValueRelationship;
    string_map["IFCAPPLIEDVALUESELECT"                         ] = Type::IfcAppliedValueSelect;
    string_map["IFCAPPROVAL"                                   ] = Type::IfcApproval;
    string_map["IFCAPPROVALACTORRELATIONSHIP"                  ] = Type::IfcApprovalActorRelationship;
    string_map["IFCAPPROVALPROPERTYRELATIONSHIP"               ] = Type::IfcApprovalPropertyRelationship;
    string_map["IFCAPPROVALRELATIONSHIP"                       ] = Type::IfcApprovalRelationship;
    string_map["IFCARBITRARYCLOSEDPROFILEDEF"                  ] = Type::IfcArbitraryClosedProfileDef;
    string_map["IFCARBITRARYOPENPROFILEDEF"                    ] = Type::IfcArbitraryOpenProfileDef;
    string_map["IFCARBITRARYPROFILEDEFWITHVOIDS"               ] = Type::IfcArbitraryProfileDefWithVoids;
    string_map["IFCAREAMEASURE"                                ] = Type::IfcAreaMeasure;
    string_map["IFCARITHMETICOPERATORENUM"                     ] = Type::IfcArithmeticOperatorEnum;
    string_map["IFCASSEMBLYPLACEENUM"                          ] = Type::IfcAssemblyPlaceEnum;
    string_map["IFCASSET"                                      ] = Type::IfcAsset;
    string_map["IFCASYMMETRICISHAPEPROFILEDEF"                 ] = Type::IfcAsymmetricIShapeProfileDef;
    string_map["IFCAXIS1PLACEMENT"                             ] = Type::IfcAxis1Placement;
    string_map["IFCAXIS2PLACEMENT"                             ] = Type::IfcAxis2Placement;
    string_map["IFCAXIS2PLACEMENT2D"                           ] = Type::IfcAxis2Placement2D;
    string_map["IFCAXIS2PLACEMENT3D"                           ] = Type::IfcAxis2Placement3D;
    string_map["IFCBEAM"                                       ] = Type::IfcBeam;
    string_map["IFCBEAMTYPE"                                   ] = Type::IfcBeamType;
    string_map["IFCBEAMTYPEENUM"                               ] = Type::IfcBeamTypeEnum;
    string_map["IFCBENCHMARKENUM"                              ] = Type::IfcBenchmarkEnum;
    string_map["IFCBEZIERCURVE"                                ] = Type::IfcBezierCurve;
    string_map["IFCBLOBTEXTURE"                                ] = Type::IfcBlobTexture;
    string_map["IFCBLOCK"                                      ] = Type::IfcBlock;
    string_map["IFCBOILERTYPE"                                 ] = Type::IfcBoilerType;
    string_map["IFCBOILERTYPEENUM"                             ] = Type::IfcBoilerTypeEnum;
    string_map["IFCBOOLEAN"                                    ] = Type::IfcBoolean;
    string_map["IFCBOOLEANCLIPPINGRESULT"                      ] = Type::IfcBooleanClippingResult;
    string_map["IFCBOOLEANOPERAND"                             ] = Type::IfcBooleanOperand;
    string_map["IFCBOOLEANOPERATOR"                            ] = Type::IfcBooleanOperator;
    string_map["IFCBOOLEANRESULT"                              ] = Type::IfcBooleanResult;
    string_map["IFCBOUNDARYCONDITION"                          ] = Type::IfcBoundaryCondition;
    string_map["IFCBOUNDARYEDGECONDITION"                      ] = Type::IfcBoundaryEdgeCondition;
    string_map["IFCBOUNDARYFACECONDITION"                      ] = Type::IfcBoundaryFaceCondition;
    string_map["IFCBOUNDARYNODECONDITION"                      ] = Type::IfcBoundaryNodeCondition;
    string_map["IFCBOUNDARYNODECONDITIONWARPING"               ] = Type::IfcBoundaryNodeConditionWarping;
    string_map["IFCBOUNDEDCURVE"                               ] = Type::IfcBoundedCurve;
    string_map["IFCBOUNDEDSURFACE"                             ] = Type::IfcBoundedSurface;
    string_map["IFCBOUNDINGBOX"                                ] = Type::IfcBoundingBox;
    string_map["IFCBOXALIGNMENT"                               ] = Type::IfcBoxAlignment;
    string_map["IFCBOXEDHALFSPACE"                             ] = Type::IfcBoxedHalfSpace;
    string_map["IFCBSPLINECURVE"                               ] = Type::IfcBSplineCurve;
    string_map["IFCBSPLINECURVEFORM"                           ] = Type::IfcBSplineCurveForm;
    string_map["IFCBUILDING"                                   ] = Type::IfcBuilding;
    string_map["IFCBUILDINGELEMENT"                            ] = Type::IfcBuildingElement;
    string_map["IFCBUILDINGELEMENTCOMPONENT"                   ] = Type::IfcBuildingElementComponent;
    string_map["IFCBUILDINGELEMENTPART"                        ] = Type::IfcBuildingElementPart;
    string_map["IFCBUILDINGELEMENTPROXY"                       ] = Type::IfcBuildingElementProxy;
    string_map["IFCBUILDINGELEMENTPROXYTYPE"                   ] = Type::IfcBuildingElementProxyType;
    string_map["IFCBUILDINGELEMENTPROXYTYPEENUM"               ] = Type::IfcBuildingElementProxyTypeEnum;
    string_map["IFCBUILDINGELEMENTTYPE"                        ] = Type::IfcBuildingElementType;
    string_map["IFCBUILDINGSTOREY"                             ] = Type::IfcBuildingStorey;
    string_map["IFCCABLECARRIERFITTINGTYPE"                    ] = Type::IfcCableCarrierFittingType;
    string_map["IFCCABLECARRIERFITTINGTYPEENUM"                ] = Type::IfcCableCarrierFittingTypeEnum;
    string_map["IFCCABLECARRIERSEGMENTTYPE"                    ] = Type::IfcCableCarrierSegmentType;
    string_map["IFCCABLECARRIERSEGMENTTYPEENUM"                ] = Type::IfcCableCarrierSegmentTypeEnum;
    string_map["IFCCABLESEGMENTTYPE"                           ] = Type::IfcCableSegmentType;
    string_map["IFCCABLESEGMENTTYPEENUM"                       ] = Type::IfcCableSegmentTypeEnum;
    string_map["IFCCALENDARDATE"                               ] = Type::IfcCalendarDate;
    string_map["IFCCARTESIANPOINT"                             ] = Type::IfcCartesianPoint;
    string_map["IFCCARTESIANTRANSFORMATIONOPERATOR"            ] = Type::IfcCartesianTransformationOperator;
    string_map["IFCCARTESIANTRANSFORMATIONOPERATOR2D"          ] = Type::IfcCartesianTransformationOperator2D;
    string_map["IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM"] = Type::IfcCartesianTransformationOperator2DnonUniform;
    string_map["IFCCARTESIANTRANSFORMATIONOPERATOR3D"          ] = Type::IfcCartesianTransformationOperator3D;
    string_map["IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM"] = Type::IfcCartesianTransformationOperator3DnonUniform;
    string_map["IFCCENTERLINEPROFILEDEF"                       ] = Type::IfcCenterLineProfileDef;
    string_map["IFCCHAMFEREDGEFEATURE"                         ] = Type::IfcChamferEdgeFeature;
    string_map["IFCCHANGEACTIONENUM"                           ] = Type::IfcChangeActionEnum;
    string_map["IFCCHARACTERSTYLESELECT"                       ] = Type::IfcCharacterStyleSelect;
    string_map["IFCCHILLERTYPE"                                ] = Type::IfcChillerType;
    string_map["IFCCHILLERTYPEENUM"                            ] = Type::IfcChillerTypeEnum;
    string_map["IFCCIRCLE"                                     ] = Type::IfcCircle;
    string_map["IFCCIRCLEHOLLOWPROFILEDEF"                     ] = Type::IfcCircleHollowProfileDef;
    string_map["IFCCIRCLEPROFILEDEF"                           ] = Type::IfcCircleProfileDef;
    string_map["IFCCLASSIFICATION"                             ] = Type::IfcClassification;
    string_map["IFCCLASSIFICATIONITEM"                         ] = Type::IfcClassificationItem;
    string_map["IFCCLASSIFICATIONITEMRELATIONSHIP"             ] = Type::IfcClassificationItemRelationship;
    string_map["IFCCLASSIFICATIONNOTATION"                     ] = Type::IfcClassificationNotation;
    string_map["IFCCLASSIFICATIONNOTATIONFACET"                ] = Type::IfcClassificationNotationFacet;
    string_map["IFCCLASSIFICATIONNOTATIONSELECT"               ] = Type::IfcClassificationNotationSelect;
    string_map["IFCCLASSIFICATIONREFERENCE"                    ] = Type::IfcClassificationReference;
    string_map["IFCCLOSEDSHELL"                                ] = Type::IfcClosedShell;
    string_map["IFCCOILTYPE"                                   ] = Type::IfcCoilType;
    string_map["IFCCOILTYPEENUM"                               ] = Type::IfcCoilTypeEnum;
    string_map["IFCCOLOUR"                                     ] = Type::IfcColour;
    string_map["IFCCOLOURORFACTOR"                             ] = Type::IfcColourOrFactor;
    string_map["IFCCOLOURRGB"                                  ] = Type::IfcColourRgb;
    string_map["IFCCOLOURSPECIFICATION"                        ] = Type::IfcColourSpecification;
    string_map["IFCCOLUMN"                                     ] = Type::IfcColumn;
    string_map["IFCCOLUMNTYPE"                                 ] = Type::IfcColumnType;
    string_map["IFCCOLUMNTYPEENUM"                             ] = Type::IfcColumnTypeEnum;
    string_map["IFCCOMPLEXNUMBER"                              ] = Type::IfcComplexNumber;
    string_map["IFCCOMPLEXPROPERTY"                            ] = Type::IfcComplexProperty;
    string_map["IFCCOMPOSITECURVE"                             ] = Type::IfcCompositeCurve;
    string_map["IFCCOMPOSITECURVESEGMENT"                      ] = Type::IfcCompositeCurveSegment;
    string_map["IFCCOMPOSITEPROFILEDEF"                        ] = Type::IfcCompositeProfileDef;
    string_map["IFCCOMPOUNDPLANEANGLEMEASURE"                  ] = Type::IfcCompoundPlaneAngleMeasure;
    string_map["IFCCOMPRESSORTYPE"                             ] = Type::IfcCompressorType;
    string_map["IFCCOMPRESSORTYPEENUM"                         ] = Type::IfcCompressorTypeEnum;
    string_map["IFCCONDENSERTYPE"                              ] = Type::IfcCondenserType;
    string_map["IFCCONDENSERTYPEENUM"                          ] = Type::IfcCondenserTypeEnum;
    string_map["IFCCONDITION"                                  ] = Type::IfcCondition;
    string_map["IFCCONDITIONCRITERION"                         ] = Type::IfcConditionCriterion;
    string_map["IFCCONDITIONCRITERIONSELECT"                   ] = Type::IfcConditionCriterionSelect;
    string_map["IFCCONIC"                                      ] = Type::IfcConic;
    string_map["IFCCONNECTEDFACESET"                           ] = Type::IfcConnectedFaceSet;
    string_map["IFCCONNECTIONCURVEGEOMETRY"                    ] = Type::IfcConnectionCurveGeometry;
    string_map["IFCCONNECTIONGEOMETRY"                         ] = Type::IfcConnectionGeometry;
    string_map["IFCCONNECTIONPOINTECCENTRICITY"                ] = Type::IfcConnectionPointEccentricity;
    string_map["IFCCONNECTIONPOINTGEOMETRY"                    ] = Type::IfcConnectionPointGeometry;
    string_map["IFCCONNECTIONPORTGEOMETRY"                     ] = Type::IfcConnectionPortGeometry;
    string_map["IFCCONNECTIONSURFACEGEOMETRY"                  ] = Type::IfcConnectionSurfaceGeometry;
    string_map["IFCCONNECTIONTYPEENUM"                         ] = Type::IfcConnectionTypeEnum;
    string_map["IFCCONSTRAINT"                                 ] = Type::IfcConstraint;
    string_map["IFCCONSTRAINTAGGREGATIONRELATIONSHIP"          ] = Type::IfcConstraintAggregationRelationship;
    string_map["IFCCONSTRAINTCLASSIFICATIONRELATIONSHIP"       ] = Type::IfcConstraintClassificationRelationship;
    string_map["IFCCONSTRAINTENUM"                             ] = Type::IfcConstraintEnum;
    string_map["IFCCONSTRAINTRELATIONSHIP"                     ] = Type::IfcConstraintRelationship;
    string_map["IFCCONSTRUCTIONEQUIPMENTRESOURCE"              ] = Type::IfcConstructionEquipmentResource;
    string_map["IFCCONSTRUCTIONMATERIALRESOURCE"               ] = Type::IfcConstructionMaterialResource;
    string_map["IFCCONSTRUCTIONPRODUCTRESOURCE"                ] = Type::IfcConstructionProductResource;
    string_map["IFCCONSTRUCTIONRESOURCE"                       ] = Type::IfcConstructionResource;
    string_map["IFCCONTEXTDEPENDENTMEASURE"                    ] = Type::IfcContextDependentMeasure;
    string_map["IFCCONTEXTDEPENDENTUNIT"                       ] = Type::IfcContextDependentUnit;
    string_map["IFCCONTROL"                                    ] = Type::IfcControl;
    string_map["IFCCONTROLLERTYPE"                             ] = Type::IfcControllerType;
    string_map["IFCCONTROLLERTYPEENUM"                         ] = Type::IfcControllerTypeEnum;
    string_map["IFCCONVERSIONBASEDUNIT"                        ] = Type::IfcConversionBasedUnit;
    string_map["IFCCOOLEDBEAMTYPE"                             ] = Type::IfcCooledBeamType;
    string_map["IFCCOOLEDBEAMTYPEENUM"                         ] = Type::IfcCooledBeamTypeEnum;
    string_map["IFCCOOLINGTOWERTYPE"                           ] = Type::IfcCoolingTowerType;
    string_map["IFCCOOLINGTOWERTYPEENUM"                       ] = Type::IfcCoolingTowerTypeEnum;
    string_map["IFCCOORDINATEDUNIVERSALTIMEOFFSET"             ] = Type::IfcCoordinatedUniversalTimeOffset;
    string_map["IFCCOSTITEM"                                   ] = Type::IfcCostItem;
    string_map["IFCCOSTSCHEDULE"                               ] = Type::IfcCostSchedule;
    string_map["IFCCOSTSCHEDULETYPEENUM"                       ] = Type::IfcCostScheduleTypeEnum;
    string_map["IFCCOSTVALUE"                                  ] = Type::IfcCostValue;
    string_map["IFCCOUNTMEASURE"                               ] = Type::IfcCountMeasure;
    string_map["IFCCOVERING"                                   ] = Type::IfcCovering;
    string_map["IFCCOVERINGTYPE"                               ] = Type::IfcCoveringType;
    string_map["IFCCOVERINGTYPEENUM"                           ] = Type::IfcCoveringTypeEnum;
    string_map["IFCCRANERAILASHAPEPROFILEDEF"                  ] = Type::IfcCraneRailAShapeProfileDef;
    string_map["IFCCRANERAILFSHAPEPROFILEDEF"                  ] = Type::IfcCraneRailFShapeProfileDef;
    string_map["IFCCREWRESOURCE"                               ] = Type::IfcCrewResource;
    string_map["IFCCSGPRIMITIVE3D"                             ] = Type::IfcCsgPrimitive3D;
    string_map["IFCCSGSELECT"                                  ] = Type::IfcCsgSelect;
    string_map["IFCCSGSOLID"                                   ] = Type::IfcCsgSolid;
    string_map["IFCCSHAPEPROFILEDEF"                           ] = Type::IfcCShapeProfileDef;
    string_map["IFCCURRENCYENUM"                               ] = Type::IfcCurrencyEnum;
    string_map["IFCCURRENCYRELATIONSHIP"                       ] = Type::IfcCurrencyRelationship;
    string_map["IFCCURTAINWALL"                                ] = Type::IfcCurtainWall;
    string_map["IFCCURTAINWALLTYPE"                            ] = Type::IfcCurtainWallType;
    string_map["IFCCURTAINWALLTYPEENUM"                        ] = Type::IfcCurtainWallTypeEnum;
    string_map["IFCCURVATUREMEASURE"                           ] = Type::IfcCurvatureMeasure;
    string_map["IFCCURVE"                                      ] = Type::IfcCurve;
    string_map["IFCCURVEBOUNDEDPLANE"                          ] = Type::IfcCurveBoundedPlane;
    string_map["IFCCURVEFONTORSCALEDCURVEFONTSELECT"           ] = Type::IfcCurveFontOrScaledCurveFontSelect;
    string_map["IFCCURVEOREDGECURVE"                           ] = Type::IfcCurveOrEdgeCurve;
    string_map["IFCCURVESTYLE"                                 ] = Type::IfcCurveStyle;
    string_map["IFCCURVESTYLEFONT"                             ] = Type::IfcCurveStyleFont;
    string_map["IFCCURVESTYLEFONTANDSCALING"                   ] = Type::IfcCurveStyleFontAndScaling;
    string_map["IFCCURVESTYLEFONTPATTERN"                      ] = Type::IfcCurveStyleFontPattern;
    string_map["IFCCURVESTYLEFONTSELECT"                       ] = Type::IfcCurveStyleFontSelect;
    string_map["IFCDAMPERTYPE"                                 ] = Type::IfcDamperType;
    string_map["IFCDAMPERTYPEENUM"                             ] = Type::IfcDamperTypeEnum;
    string_map["IFCDATAORIGINENUM"                             ] = Type::IfcDataOriginEnum;
    string_map["IFCDATEANDTIME"                                ] = Type::IfcDateAndTime;
    string_map["IFCDATETIMESELECT"                             ] = Type::IfcDateTimeSelect;
    string_map["IFCDAYINMONTHNUMBER"                           ] = Type::IfcDayInMonthNumber;
    string_map["IFCDAYLIGHTSAVINGHOUR"                         ] = Type::IfcDaylightSavingHour;
    string_map["IFCDEFINEDSYMBOL"                              ] = Type::IfcDefinedSymbol;
    string_map["IFCDEFINEDSYMBOLSELECT"                        ] = Type::IfcDefinedSymbolSelect;
    string_map["IFCDERIVEDMEASUREVALUE"                        ] = Type::IfcDerivedMeasureValue;
    string_map["IFCDERIVEDPROFILEDEF"                          ] = Type::IfcDerivedProfileDef;
    string_map["IFCDERIVEDUNIT"                                ] = Type::IfcDerivedUnit;
    string_map["IFCDERIVEDUNITELEMENT"                         ] = Type::IfcDerivedUnitElement;
    string_map["IFCDERIVEDUNITENUM"                            ] = Type::IfcDerivedUnitEnum;
    string_map["IFCDESCRIPTIVEMEASURE"                         ] = Type::IfcDescriptiveMeasure;
    string_map["IFCDIAMETERDIMENSION"                          ] = Type::IfcDiameterDimension;
    string_map["IFCDIMENSIONALEXPONENTS"                       ] = Type::IfcDimensionalExponents;
    string_map["IFCDIMENSIONCALLOUTRELATIONSHIP"               ] = Type::IfcDimensionCalloutRelationship;
    string_map["IFCDIMENSIONCOUNT"                             ] = Type::IfcDimensionCount;
    string_map["IFCDIMENSIONCURVE"                             ] = Type::IfcDimensionCurve;
    string_map["IFCDIMENSIONCURVEDIRECTEDCALLOUT"              ] = Type::IfcDimensionCurveDirectedCallout;
    string_map["IFCDIMENSIONCURVETERMINATOR"                   ] = Type::IfcDimensionCurveTerminator;
    string_map["IFCDIMENSIONEXTENTUSAGE"                       ] = Type::IfcDimensionExtentUsage;
    string_map["IFCDIMENSIONPAIR"                              ] = Type::IfcDimensionPair;
    string_map["IFCDIRECTION"                                  ] = Type::IfcDirection;
    string_map["IFCDIRECTIONSENSEENUM"                         ] = Type::IfcDirectionSenseEnum;
    string_map["IFCDISCRETEACCESSORY"                          ] = Type::IfcDiscreteAccessory;
    string_map["IFCDISCRETEACCESSORYTYPE"                      ] = Type::IfcDiscreteAccessoryType;
    string_map["IFCDISTRIBUTIONCHAMBERELEMENT"                 ] = Type::IfcDistributionChamberElement;
    string_map["IFCDISTRIBUTIONCHAMBERELEMENTTYPE"             ] = Type::IfcDistributionChamberElementType;
    string_map["IFCDISTRIBUTIONCHAMBERELEMENTTYPEENUM"         ] = Type::IfcDistributionChamberElementTypeEnum;
    string_map["IFCDISTRIBUTIONCONTROLELEMENT"                 ] = Type::IfcDistributionControlElement;
    string_map["IFCDISTRIBUTIONCONTROLELEMENTTYPE"             ] = Type::IfcDistributionControlElementType;
    string_map["IFCDISTRIBUTIONELEMENT"                        ] = Type::IfcDistributionElement;
    string_map["IFCDISTRIBUTIONELEMENTTYPE"                    ] = Type::IfcDistributionElementType;
    string_map["IFCDISTRIBUTIONFLOWELEMENT"                    ] = Type::IfcDistributionFlowElement;
    string_map["IFCDISTRIBUTIONFLOWELEMENTTYPE"                ] = Type::IfcDistributionFlowElementType;
    string_map["IFCDISTRIBUTIONPORT"                           ] = Type::IfcDistributionPort;
    string_map["IFCDOCUMENTCONFIDENTIALITYENUM"                ] = Type::IfcDocumentConfidentialityEnum;
    string_map["IFCDOCUMENTELECTRONICFORMAT"                   ] = Type::IfcDocumentElectronicFormat;
    string_map["IFCDOCUMENTINFORMATION"                        ] = Type::IfcDocumentInformation;
    string_map["IFCDOCUMENTINFORMATIONRELATIONSHIP"            ] = Type::IfcDocumentInformationRelationship;
    string_map["IFCDOCUMENTREFERENCE"                          ] = Type::IfcDocumentReference;
    string_map["IFCDOCUMENTSELECT"                             ] = Type::IfcDocumentSelect;
    string_map["IFCDOCUMENTSTATUSENUM"                         ] = Type::IfcDocumentStatusEnum;
    string_map["IFCDOOR"                                       ] = Type::IfcDoor;
    string_map["IFCDOORLININGPROPERTIES"                       ] = Type::IfcDoorLiningProperties;
    string_map["IFCDOORPANELOPERATIONENUM"                     ] = Type::IfcDoorPanelOperationEnum;
    string_map["IFCDOORPANELPOSITIONENUM"                      ] = Type::IfcDoorPanelPositionEnum;
    string_map["IFCDOORPANELPROPERTIES"                        ] = Type::IfcDoorPanelProperties;
    string_map["IFCDOORSTYLE"                                  ] = Type::IfcDoorStyle;
    string_map["IFCDOORSTYLECONSTRUCTIONENUM"                  ] = Type::IfcDoorStyleConstructionEnum;
    string_map["IFCDOORSTYLEOPERATIONENUM"                     ] = Type::IfcDoorStyleOperationEnum;
    string_map["IFCDOSEEQUIVALENTMEASURE"                      ] = Type::IfcDoseEquivalentMeasure;
    string_map["IFCDRAUGHTINGCALLOUT"                          ] = Type::IfcDraughtingCallout;
    string_map["IFCDRAUGHTINGCALLOUTELEMENT"                   ] = Type::IfcDraughtingCalloutElement;
    string_map["IFCDRAUGHTINGCALLOUTRELATIONSHIP"              ] = Type::IfcDraughtingCalloutRelationship;
    string_map["IFCDRAUGHTINGPREDEFINEDCOLOUR"                 ] = Type::IfcDraughtingPreDefinedColour;
    string_map["IFCDRAUGHTINGPREDEFINEDCURVEFONT"              ] = Type::IfcDraughtingPreDefinedCurveFont;
    string_map["IFCDRAUGHTINGPREDEFINEDTEXTFONT"               ] = Type::IfcDraughtingPreDefinedTextFont;
    string_map["IFCDUCTFITTINGTYPE"                            ] = Type::IfcDuctFittingType;
    string_map["IFCDUCTFITTINGTYPEENUM"                        ] = Type::IfcDuctFittingTypeEnum;
    string_map["IFCDUCTSEGMENTTYPE"                            ] = Type::IfcDuctSegmentType;
    string_map["IFCDUCTSEGMENTTYPEENUM"                        ] = Type::IfcDuctSegmentTypeEnum;
    string_map["IFCDUCTSILENCERTYPE"                           ] = Type::IfcDuctSilencerType;
    string_map["IFCDUCTSILENCERTYPEENUM"                       ] = Type::IfcDuctSilencerTypeEnum;
    string_map["IFCDYNAMICVISCOSITYMEASURE"                    ] = Type::IfcDynamicViscosityMeasure;
    string_map["IFCEDGE"                                       ] = Type::IfcEdge;
    string_map["IFCEDGECURVE"                                  ] = Type::IfcEdgeCurve;
    string_map["IFCEDGEFEATURE"                                ] = Type::IfcEdgeFeature;
    string_map["IFCEDGELOOP"                                   ] = Type::IfcEdgeLoop;
    string_map["IFCELECTRICALBASEPROPERTIES"                   ] = Type::IfcElectricalBaseProperties;
    string_map["IFCELECTRICALCIRCUIT"                          ] = Type::IfcElectricalCircuit;
    string_map["IFCELECTRICALELEMENT"                          ] = Type::IfcElectricalElement;
    string_map["IFCELECTRICAPPLIANCETYPE"                      ] = Type::IfcElectricApplianceType;
    string_map["IFCELECTRICAPPLIANCETYPEENUM"                  ] = Type::IfcElectricApplianceTypeEnum;
    string_map["IFCELECTRICCAPACITANCEMEASURE"                 ] = Type::IfcElectricCapacitanceMeasure;
    string_map["IFCELECTRICCHARGEMEASURE"                      ] = Type::IfcElectricChargeMeasure;
    string_map["IFCELECTRICCONDUCTANCEMEASURE"                 ] = Type::IfcElectricConductanceMeasure;
    string_map["IFCELECTRICCURRENTENUM"                        ] = Type::IfcElectricCurrentEnum;
    string_map["IFCELECTRICCURRENTMEASURE"                     ] = Type::IfcElectricCurrentMeasure;
    string_map["IFCELECTRICDISTRIBUTIONPOINT"                  ] = Type::IfcElectricDistributionPoint;
    string_map["IFCELECTRICDISTRIBUTIONPOINTFUNCTIONENUM"      ] = Type::IfcElectricDistributionPointFunctionEnum;
    string_map["IFCELECTRICFLOWSTORAGEDEVICETYPE"              ] = Type::IfcElectricFlowStorageDeviceType;
    string_map["IFCELECTRICFLOWSTORAGEDEVICETYPEENUM"          ] = Type::IfcElectricFlowStorageDeviceTypeEnum;
    string_map["IFCELECTRICGENERATORTYPE"                      ] = Type::IfcElectricGeneratorType;
    string_map["IFCELECTRICGENERATORTYPEENUM"                  ] = Type::IfcElectricGeneratorTypeEnum;
    string_map["IFCELECTRICHEATERTYPE"                         ] = Type::IfcElectricHeaterType;
    string_map["IFCELECTRICHEATERTYPEENUM"                     ] = Type::IfcElectricHeaterTypeEnum;
    string_map["IFCELECTRICMOTORTYPE"                          ] = Type::IfcElectricMotorType;
    string_map["IFCELECTRICMOTORTYPEENUM"                      ] = Type::IfcElectricMotorTypeEnum;
    string_map["IFCELECTRICRESISTANCEMEASURE"                  ] = Type::IfcElectricResistanceMeasure;
    string_map["IFCELECTRICTIMECONTROLTYPE"                    ] = Type::IfcElectricTimeControlType;
    string_map["IFCELECTRICTIMECONTROLTYPEENUM"                ] = Type::IfcElectricTimeControlTypeEnum;
    string_map["IFCELECTRICVOLTAGEMEASURE"                     ] = Type::IfcElectricVoltageMeasure;
    string_map["IFCELEMENT"                                    ] = Type::IfcElement;
    string_map["IFCELEMENTARYSURFACE"                          ] = Type::IfcElementarySurface;
    string_map["IFCELEMENTASSEMBLY"                            ] = Type::IfcElementAssembly;
    string_map["IFCELEMENTASSEMBLYTYPEENUM"                    ] = Type::IfcElementAssemblyTypeEnum;
    string_map["IFCELEMENTCOMPONENT"                           ] = Type::IfcElementComponent;
    string_map["IFCELEMENTCOMPONENTTYPE"                       ] = Type::IfcElementComponentType;
    string_map["IFCELEMENTCOMPOSITIONENUM"                     ] = Type::IfcElementCompositionEnum;
    string_map["IFCELEMENTQUANTITY"                            ] = Type::IfcElementQuantity;
    string_map["IFCELEMENTTYPE"                                ] = Type::IfcElementType;
    string_map["IFCELLIPSE"                                    ] = Type::IfcEllipse;
    string_map["IFCELLIPSEPROFILEDEF"                          ] = Type::IfcEllipseProfileDef;
    string_map["IFCENERGYCONVERSIONDEVICE"                     ] = Type::IfcEnergyConversionDevice;
    string_map["IFCENERGYCONVERSIONDEVICETYPE"                 ] = Type::IfcEnergyConversionDeviceType;
    string_map["IFCENERGYMEASURE"                              ] = Type::IfcEnergyMeasure;
    string_map["IFCENERGYPROPERTIES"                           ] = Type::IfcEnergyProperties;
    string_map["IFCENERGYSEQUENCEENUM"                         ] = Type::IfcEnergySequenceEnum;
    string_map["IFCENVIRONMENTALIMPACTCATEGORYENUM"            ] = Type::IfcEnvironmentalImpactCategoryEnum;
    string_map["IFCENVIRONMENTALIMPACTVALUE"                   ] = Type::IfcEnvironmentalImpactValue;
    string_map["IFCEQUIPMENTELEMENT"                           ] = Type::IfcEquipmentElement;
    string_map["IFCEQUIPMENTSTANDARD"                          ] = Type::IfcEquipmentStandard;
    string_map["IFCEVAPORATIVECOOLERTYPE"                      ] = Type::IfcEvaporativeCoolerType;
    string_map["IFCEVAPORATIVECOOLERTYPEENUM"                  ] = Type::IfcEvaporativeCoolerTypeEnum;
    string_map["IFCEVAPORATORTYPE"                             ] = Type::IfcEvaporatorType;
    string_map["IFCEVAPORATORTYPEENUM"                         ] = Type::IfcEvaporatorTypeEnum;
    string_map["IFCEXTENDEDMATERIALPROPERTIES"                 ] = Type::IfcExtendedMaterialProperties;
    string_map["IFCEXTERNALLYDEFINEDHATCHSTYLE"                ] = Type::IfcExternallyDefinedHatchStyle;
    string_map["IFCEXTERNALLYDEFINEDSURFACESTYLE"              ] = Type::IfcExternallyDefinedSurfaceStyle;
    string_map["IFCEXTERNALLYDEFINEDSYMBOL"                    ] = Type::IfcExternallyDefinedSymbol;
    string_map["IFCEXTERNALLYDEFINEDTEXTFONT"                  ] = Type::IfcExternallyDefinedTextFont;
    string_map["IFCEXTERNALREFERENCE"                          ] = Type::IfcExternalReference;
    string_map["IFCEXTRUDEDAREASOLID"                          ] = Type::IfcExtrudedAreaSolid;
    string_map["IFCFACE"                                       ] = Type::IfcFace;
    string_map["IFCFACEBASEDSURFACEMODEL"                      ] = Type::IfcFaceBasedSurfaceModel;
    string_map["IFCFACEBOUND"                                  ] = Type::IfcFaceBound;
    string_map["IFCFACEOUTERBOUND"                             ] = Type::IfcFaceOuterBound;
    string_map["IFCFACESURFACE"                                ] = Type::IfcFaceSurface;
    string_map["IFCFACETEDBREP"                                ] = Type::IfcFacetedBrep;
    string_map["IFCFACETEDBREPWITHVOIDS"                       ] = Type::IfcFacetedBrepWithVoids;
    string_map["IFCFAILURECONNECTIONCONDITION"                 ] = Type::IfcFailureConnectionCondition;
    string_map["IFCFANTYPE"                                    ] = Type::IfcFanType;
    string_map["IFCFANTYPEENUM"                                ] = Type::IfcFanTypeEnum;
    string_map["IFCFASTENER"                                   ] = Type::IfcFastener;
    string_map["IFCFASTENERTYPE"                               ] = Type::IfcFastenerType;
    string_map["IFCFEATUREELEMENT"                             ] = Type::IfcFeatureElement;
    string_map["IFCFEATUREELEMENTADDITION"                     ] = Type::IfcFeatureElementAddition;
    string_map["IFCFEATUREELEMENTSUBTRACTION"                  ] = Type::IfcFeatureElementSubtraction;
    string_map["IFCFILLAREASTYLE"                              ] = Type::IfcFillAreaStyle;
    string_map["IFCFILLAREASTYLEHATCHING"                      ] = Type::IfcFillAreaStyleHatching;
    string_map["IFCFILLAREASTYLETILES"                         ] = Type::IfcFillAreaStyleTiles;
    string_map["IFCFILLAREASTYLETILESHAPESELECT"               ] = Type::IfcFillAreaStyleTileShapeSelect;
    string_map["IFCFILLAREASTYLETILESYMBOLWITHSTYLE"           ] = Type::IfcFillAreaStyleTileSymbolWithStyle;
    string_map["IFCFILLSTYLESELECT"                            ] = Type::IfcFillStyleSelect;
    string_map["IFCFILTERTYPE"                                 ] = Type::IfcFilterType;
    string_map["IFCFILTERTYPEENUM"                             ] = Type::IfcFilterTypeEnum;
    string_map["IFCFIRESUPPRESSIONTERMINALTYPE"                ] = Type::IfcFireSuppressionTerminalType;
    string_map["IFCFIRESUPPRESSIONTERMINALTYPEENUM"            ] = Type::IfcFireSuppressionTerminalTypeEnum;
    string_map["IFCFLOWCONTROLLER"                             ] = Type::IfcFlowController;
    string_map["IFCFLOWCONTROLLERTYPE"                         ] = Type::IfcFlowControllerType;
    string_map["IFCFLOWDIRECTIONENUM"                          ] = Type::IfcFlowDirectionEnum;
    string_map["IFCFLOWFITTING"                                ] = Type::IfcFlowFitting;
    string_map["IFCFLOWFITTINGTYPE"                            ] = Type::IfcFlowFittingType;
    string_map["IFCFLOWINSTRUMENTTYPE"                         ] = Type::IfcFlowInstrumentType;
    string_map["IFCFLOWINSTRUMENTTYPEENUM"                     ] = Type::IfcFlowInstrumentTypeEnum;
    string_map["IFCFLOWMETERTYPE"                              ] = Type::IfcFlowMeterType;
    string_map["IFCFLOWMETERTYPEENUM"                          ] = Type::IfcFlowMeterTypeEnum;
    string_map["IFCFLOWMOVINGDEVICE"                           ] = Type::IfcFlowMovingDevice;
    string_map["IFCFLOWMOVINGDEVICETYPE"                       ] = Type::IfcFlowMovingDeviceType;
    string_map["IFCFLOWSEGMENT"                                ] = Type::IfcFlowSegment;
    string_map["IFCFLOWSEGMENTTYPE"                            ] = Type::IfcFlowSegmentType;
    string_map["IFCFLOWSTORAGEDEVICE"                          ] = Type::IfcFlowStorageDevice;
    string_map["IFCFLOWSTORAGEDEVICETYPE"                      ] = Type::IfcFlowStorageDeviceType;
    string_map["IFCFLOWTERMINAL"                               ] = Type::IfcFlowTerminal;
    string_map["IFCFLOWTERMINALTYPE"                           ] = Type::IfcFlowTerminalType;
    string_map["IFCFLOWTREATMENTDEVICE"                        ] = Type::IfcFlowTreatmentDevice;
    string_map["IFCFLOWTREATMENTDEVICETYPE"                    ] = Type::IfcFlowTreatmentDeviceType;
    string_map["IFCFLUIDFLOWPROPERTIES"                        ] = Type::IfcFluidFlowProperties;
    string_map["IFCFONTSTYLE"                                  ] = Type::IfcFontStyle;
    string_map["IFCFONTVARIANT"                                ] = Type::IfcFontVariant;
    string_map["IFCFONTWEIGHT"                                 ] = Type::IfcFontWeight;
    string_map["IFCFOOTING"                                    ] = Type::IfcFooting;
    string_map["IFCFOOTINGTYPEENUM"                            ] = Type::IfcFootingTypeEnum;
    string_map["IFCFORCEMEASURE"                               ] = Type::IfcForceMeasure;
    string_map["IFCFREQUENCYMEASURE"                           ] = Type::IfcFrequencyMeasure;
    string_map["IFCFUELPROPERTIES"                             ] = Type::IfcFuelProperties;
    string_map["IFCFURNISHINGELEMENT"                          ] = Type::IfcFurnishingElement;
    string_map["IFCFURNISHINGELEMENTTYPE"                      ] = Type::IfcFurnishingElementType;
    string_map["IFCFURNITURESTANDARD"                          ] = Type::IfcFurnitureStandard;
    string_map["IFCFURNITURETYPE"                              ] = Type::IfcFurnitureType;
    string_map["IFCGASTERMINALTYPE"                            ] = Type::IfcGasTerminalType;
    string_map["IFCGASTERMINALTYPEENUM"                        ] = Type::IfcGasTerminalTypeEnum;
    string_map["IFCGENERALMATERIALPROPERTIES"                  ] = Type::IfcGeneralMaterialProperties;
    string_map["IFCGENERALPROFILEPROPERTIES"                   ] = Type::IfcGeneralProfileProperties;
    string_map["IFCGEOMETRICCURVESET"                          ] = Type::IfcGeometricCurveSet;
    string_map["IFCGEOMETRICPROJECTIONENUM"                    ] = Type::IfcGeometricProjectionEnum;
    string_map["IFCGEOMETRICREPRESENTATIONCONTEXT"             ] = Type::IfcGeometricRepresentationContext;
    string_map["IFCGEOMETRICREPRESENTATIONITEM"                ] = Type::IfcGeometricRepresentationItem;
    string_map["IFCGEOMETRICREPRESENTATIONSUBCONTEXT"          ] = Type::IfcGeometricRepresentationSubContext;
    string_map["IFCGEOMETRICSET"                               ] = Type::IfcGeometricSet;
    string_map["IFCGEOMETRICSETSELECT"                         ] = Type::IfcGeometricSetSelect;
    string_map["IFCGLOBALLYUNIQUEID"                           ] = Type::IfcGloballyUniqueId;
    string_map["IFCGLOBALORLOCALENUM"                          ] = Type::IfcGlobalOrLocalEnum;
    string_map["IFCGRID"                                       ] = Type::IfcGrid;
    string_map["IFCGRIDAXIS"                                   ] = Type::IfcGridAxis;
    string_map["IFCGRIDPLACEMENT"                              ] = Type::IfcGridPlacement;
    string_map["IFCGROUP"                                      ] = Type::IfcGroup;
    string_map["IFCHALFSPACESOLID"                             ] = Type::IfcHalfSpaceSolid;
    string_map["IFCHATCHLINEDISTANCESELECT"                    ] = Type::IfcHatchLineDistanceSelect;
    string_map["IFCHEATEXCHANGERTYPE"                          ] = Type::IfcHeatExchangerType;
    string_map["IFCHEATEXCHANGERTYPEENUM"                      ] = Type::IfcHeatExchangerTypeEnum;
    string_map["IFCHEATFLUXDENSITYMEASURE"                     ] = Type::IfcHeatFluxDensityMeasure;
    string_map["IFCHEATINGVALUEMEASURE"                        ] = Type::IfcHeatingValueMeasure;
    string_map["IFCHOURINDAY"                                  ] = Type::IfcHourInDay;
    string_map["IFCHUMIDIFIERTYPE"                             ] = Type::IfcHumidifierType;
    string_map["IFCHUMIDIFIERTYPEENUM"                         ] = Type::IfcHumidifierTypeEnum;
    string_map["IFCHYGROSCOPICMATERIALPROPERTIES"              ] = Type::IfcHygroscopicMaterialProperties;
    string_map["IFCIDENTIFIER"                                 ] = Type::IfcIdentifier;
    string_map["IFCILLUMINANCEMEASURE"                         ] = Type::IfcIlluminanceMeasure;
    string_map["IFCIMAGETEXTURE"                               ] = Type::IfcImageTexture;
    string_map["IFCINDUCTANCEMEASURE"                          ] = Type::IfcInductanceMeasure;
    string_map["IFCINTEGER"                                    ] = Type::IfcInteger;
    string_map["IFCINTEGERCOUNTRATEMEASURE"                    ] = Type::IfcIntegerCountRateMeasure;
    string_map["IFCINTERNALOREXTERNALENUM"                     ] = Type::IfcInternalOrExternalEnum;
    string_map["IFCINVENTORY"                                  ] = Type::IfcInventory;
    string_map["IFCINVENTORYTYPEENUM"                          ] = Type::IfcInventoryTypeEnum;
    string_map["IFCIONCONCENTRATIONMEASURE"                    ] = Type::IfcIonConcentrationMeasure;
    string_map["IFCIRREGULARTIMESERIES"                        ] = Type::IfcIrregularTimeSeries;
    string_map["IFCIRREGULARTIMESERIESVALUE"                   ] = Type::IfcIrregularTimeSeriesValue;
    string_map["IFCISHAPEPROFILEDEF"                           ] = Type::IfcIShapeProfileDef;
    string_map["IFCISOTHERMALMOISTURECAPACITYMEASURE"          ] = Type::IfcIsothermalMoistureCapacityMeasure;
    string_map["IFCJUNCTIONBOXTYPE"                            ] = Type::IfcJunctionBoxType;
    string_map["IFCJUNCTIONBOXTYPEENUM"                        ] = Type::IfcJunctionBoxTypeEnum;
    string_map["IFCKINEMATICVISCOSITYMEASURE"                  ] = Type::IfcKinematicViscosityMeasure;
    string_map["IFCLABEL"                                      ] = Type::IfcLabel;
    string_map["IFCLABORRESOURCE"                              ] = Type::IfcLaborResource;
    string_map["IFCLAMPTYPE"                                   ] = Type::IfcLampType;
    string_map["IFCLAMPTYPEENUM"                               ] = Type::IfcLampTypeEnum;
    string_map["IFCLAYEREDITEM"                                ] = Type::IfcLayeredItem;
    string_map["IFCLAYERSETDIRECTIONENUM"                      ] = Type::IfcLayerSetDirectionEnum;
    string_map["IFCLENGTHMEASURE"                              ] = Type::IfcLengthMeasure;
    string_map["IFCLIBRARYINFORMATION"                         ] = Type::IfcLibraryInformation;
    string_map["IFCLIBRARYREFERENCE"                           ] = Type::IfcLibraryReference;
    string_map["IFCLIBRARYSELECT"                              ] = Type::IfcLibrarySelect;
    string_map["IFCLIGHTDISTRIBUTIONCURVEENUM"                 ] = Type::IfcLightDistributionCurveEnum;
    string_map["IFCLIGHTDISTRIBUTIONDATA"                      ] = Type::IfcLightDistributionData;
    string_map["IFCLIGHTDISTRIBUTIONDATASOURCESELECT"          ] = Type::IfcLightDistributionDataSourceSelect;
    string_map["IFCLIGHTEMISSIONSOURCEENUM"                    ] = Type::IfcLightEmissionSourceEnum;
    string_map["IFCLIGHTFIXTURETYPE"                           ] = Type::IfcLightFixtureType;
    string_map["IFCLIGHTFIXTURETYPEENUM"                       ] = Type::IfcLightFixtureTypeEnum;
    string_map["IFCLIGHTINTENSITYDISTRIBUTION"                 ] = Type::IfcLightIntensityDistribution;
    string_map["IFCLIGHTSOURCE"                                ] = Type::IfcLightSource;
    string_map["IFCLIGHTSOURCEAMBIENT"                         ] = Type::IfcLightSourceAmbient;
    string_map["IFCLIGHTSOURCEDIRECTIONAL"                     ] = Type::IfcLightSourceDirectional;
    string_map["IFCLIGHTSOURCEGONIOMETRIC"                     ] = Type::IfcLightSourceGoniometric;
    string_map["IFCLIGHTSOURCEPOSITIONAL"                      ] = Type::IfcLightSourcePositional;
    string_map["IFCLIGHTSOURCESPOT"                            ] = Type::IfcLightSourceSpot;
    string_map["IFCLINE"                                       ] = Type::IfcLine;
    string_map["IFCLINEARDIMENSION"                            ] = Type::IfcLinearDimension;
    string_map["IFCLINEARFORCEMEASURE"                         ] = Type::IfcLinearForceMeasure;
    string_map["IFCLINEARMOMENTMEASURE"                        ] = Type::IfcLinearMomentMeasure;
    string_map["IFCLINEARSTIFFNESSMEASURE"                     ] = Type::IfcLinearStiffnessMeasure;
    string_map["IFCLINEARVELOCITYMEASURE"                      ] = Type::IfcLinearVelocityMeasure;
    string_map["IFCLOADGROUPTYPEENUM"                          ] = Type::IfcLoadGroupTypeEnum;
    string_map["IFCLOCALPLACEMENT"                             ] = Type::IfcLocalPlacement;
    string_map["IFCLOCALTIME"                                  ] = Type::IfcLocalTime;
    string_map["IFCLOGICAL"                                    ] = Type::IfcLogical;
    string_map["IFCLOGICALOPERATORENUM"                        ] = Type::IfcLogicalOperatorEnum;
    string_map["IFCLOOP"                                       ] = Type::IfcLoop;
    string_map["IFCLSHAPEPROFILEDEF"                           ] = Type::IfcLShapeProfileDef;
    string_map["IFCLUMINOUSFLUXMEASURE"                        ] = Type::IfcLuminousFluxMeasure;
    string_map["IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE"       ] = Type::IfcLuminousIntensityDistributionMeasure;
    string_map["IFCLUMINOUSINTENSITYMEASURE"                   ] = Type::IfcLuminousIntensityMeasure;
    string_map["IFCMAGNETICFLUXDENSITYMEASURE"                 ] = Type::IfcMagneticFluxDensityMeasure;
    string_map["IFCMAGNETICFLUXMEASURE"                        ] = Type::IfcMagneticFluxMeasure;
    string_map["IFCMANIFOLDSOLIDBREP"                          ] = Type::IfcManifoldSolidBrep;
    string_map["IFCMAPPEDITEM"                                 ] = Type::IfcMappedItem;
    string_map["IFCMASSDENSITYMEASURE"                         ] = Type::IfcMassDensityMeasure;
    string_map["IFCMASSFLOWRATEMEASURE"                        ] = Type::IfcMassFlowRateMeasure;
    string_map["IFCMASSMEASURE"                                ] = Type::IfcMassMeasure;
    string_map["IFCMASSPERLENGTHMEASURE"                       ] = Type::IfcMassPerLengthMeasure;
    string_map["IFCMATERIAL"                                   ] = Type::IfcMaterial;
    string_map["IFCMATERIALCLASSIFICATIONRELATIONSHIP"         ] = Type::IfcMaterialClassificationRelationship;
    string_map["IFCMATERIALDEFINITIONREPRESENTATION"           ] = Type::IfcMaterialDefinitionRepresentation;
    string_map["IFCMATERIALLAYER"                              ] = Type::IfcMaterialLayer;
    string_map["IFCMATERIALLAYERSET"                           ] = Type::IfcMaterialLayerSet;
    string_map["IFCMATERIALLAYERSETUSAGE"                      ] = Type::IfcMaterialLayerSetUsage;
    string_map["IFCMATERIALLIST"                               ] = Type::IfcMaterialList;
    string_map["IFCMATERIALPROPERTIES"                         ] = Type::IfcMaterialProperties;
    string_map["IFCMATERIALSELECT"                             ] = Type::IfcMaterialSelect;
    string_map["IFCMEASUREVALUE"                               ] = Type::IfcMeasureValue;
    string_map["IFCMEASUREWITHUNIT"                            ] = Type::IfcMeasureWithUnit;
    string_map["IFCMECHANICALCONCRETEMATERIALPROPERTIES"       ] = Type::IfcMechanicalConcreteMaterialProperties;
    string_map["IFCMECHANICALFASTENER"                         ] = Type::IfcMechanicalFastener;
    string_map["IFCMECHANICALFASTENERTYPE"                     ] = Type::IfcMechanicalFastenerType;
    string_map["IFCMECHANICALMATERIALPROPERTIES"               ] = Type::IfcMechanicalMaterialProperties;
    string_map["IFCMECHANICALSTEELMATERIALPROPERTIES"          ] = Type::IfcMechanicalSteelMaterialProperties;
    string_map["IFCMEMBER"                                     ] = Type::IfcMember;
    string_map["IFCMEMBERTYPE"                                 ] = Type::IfcMemberType;
    string_map["IFCMEMBERTYPEENUM"                             ] = Type::IfcMemberTypeEnum;
    string_map["IFCMETRIC"                                     ] = Type::IfcMetric;
    string_map["IFCMETRICVALUESELECT"                          ] = Type::IfcMetricValueSelect;
    string_map["IFCMINUTEINHOUR"                               ] = Type::IfcMinuteInHour;
    string_map["IFCMODULUSOFELASTICITYMEASURE"                 ] = Type::IfcModulusOfElasticityMeasure;
    string_map["IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE"     ] = Type::IfcModulusOfLinearSubgradeReactionMeasure;
    string_map["IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE" ] = Type::IfcModulusOfRotationalSubgradeReactionMeasure;
    string_map["IFCMODULUSOFSUBGRADEREACTIONMEASURE"           ] = Type::IfcModulusOfSubgradeReactionMeasure;
    string_map["IFCMOISTUREDIFFUSIVITYMEASURE"                 ] = Type::IfcMoistureDiffusivityMeasure;
    string_map["IFCMOLECULARWEIGHTMEASURE"                     ] = Type::IfcMolecularWeightMeasure;
    string_map["IFCMOMENTOFINERTIAMEASURE"                     ] = Type::IfcMomentOfInertiaMeasure;
    string_map["IFCMONETARYMEASURE"                            ] = Type::IfcMonetaryMeasure;
    string_map["IFCMONETARYUNIT"                               ] = Type::IfcMonetaryUnit;
    string_map["IFCMONTHINYEARNUMBER"                          ] = Type::IfcMonthInYearNumber;
    string_map["IFCMOTORCONNECTIONTYPE"                        ] = Type::IfcMotorConnectionType;
    string_map["IFCMOTORCONNECTIONTYPEENUM"                    ] = Type::IfcMotorConnectionTypeEnum;
    string_map["IFCMOVE"                                       ] = Type::IfcMove;
    string_map["IFCNAMEDUNIT"                                  ] = Type::IfcNamedUnit;
    string_map["IFCNORMALISEDRATIOMEASURE"                     ] = Type::IfcNormalisedRatioMeasure;
    string_map["IFCNULLSTYLE"                                  ] = Type::IfcNullStyle;
    string_map["IFCNUMERICMEASURE"                             ] = Type::IfcNumericMeasure;
    string_map["IFCOBJECT"                                     ] = Type::IfcObject;
    string_map["IFCOBJECTDEFINITION"                           ] = Type::IfcObjectDefinition;
    string_map["IFCOBJECTIVE"                                  ] = Type::IfcObjective;
    string_map["IFCOBJECTIVEENUM"                              ] = Type::IfcObjectiveEnum;
    string_map["IFCOBJECTPLACEMENT"                            ] = Type::IfcObjectPlacement;
    string_map["IFCOBJECTREFERENCESELECT"                      ] = Type::IfcObjectReferenceSelect;
    string_map["IFCOBJECTTYPEENUM"                             ] = Type::IfcObjectTypeEnum;
    string_map["IFCOCCUPANT"                                   ] = Type::IfcOccupant;
    string_map["IFCOCCUPANTTYPEENUM"                           ] = Type::IfcOccupantTypeEnum;
    string_map["IFCOFFSETCURVE2D"                              ] = Type::IfcOffsetCurve2D;
    string_map["IFCOFFSETCURVE3D"                              ] = Type::IfcOffsetCurve3D;
    string_map["IFCONEDIRECTIONREPEATFACTOR"                   ] = Type::IfcOneDirectionRepeatFactor;
    string_map["IFCOPENINGELEMENT"                             ] = Type::IfcOpeningElement;
    string_map["IFCOPENSHELL"                                  ] = Type::IfcOpenShell;
    string_map["IFCOPTICALMATERIALPROPERTIES"                  ] = Type::IfcOpticalMaterialProperties;
    string_map["IFCORDERACTION"                                ] = Type::IfcOrderAction;
    string_map["IFCORGANIZATION"                               ] = Type::IfcOrganization;
    string_map["IFCORGANIZATIONRELATIONSHIP"                   ] = Type::IfcOrganizationRelationship;
    string_map["IFCORIENTATIONSELECT"                          ] = Type::IfcOrientationSelect;
    string_map["IFCORIENTEDEDGE"                               ] = Type::IfcOrientedEdge;
    string_map["IFCOUTLETTYPE"                                 ] = Type::IfcOutletType;
    string_map["IFCOUTLETTYPEENUM"                             ] = Type::IfcOutletTypeEnum;
    string_map["IFCOWNERHISTORY"                               ] = Type::IfcOwnerHistory;
    string_map["IFCPARAMETERIZEDPROFILEDEF"                    ] = Type::IfcParameterizedProfileDef;
    string_map["IFCPARAMETERVALUE"                             ] = Type::IfcParameterValue;
    string_map["IFCPATH"                                       ] = Type::IfcPath;
    string_map["IFCPERFORMANCEHISTORY"                         ] = Type::IfcPerformanceHistory;
    string_map["IFCPERMEABLECOVERINGOPERATIONENUM"             ] = Type::IfcPermeableCoveringOperationEnum;
    string_map["IFCPERMEABLECOVERINGPROPERTIES"                ] = Type::IfcPermeableCoveringProperties;
    string_map["IFCPERMIT"                                     ] = Type::IfcPermit;
    string_map["IFCPERSON"                                     ] = Type::IfcPerson;
    string_map["IFCPERSONANDORGANIZATION"                      ] = Type::IfcPersonAndOrganization;
    string_map["IFCPHMEASURE"                                  ] = Type::IfcPHMeasure;
    string_map["IFCPHYSICALCOMPLEXQUANTITY"                    ] = Type::IfcPhysicalComplexQuantity;
    string_map["IFCPHYSICALORVIRTUALENUM"                      ] = Type::IfcPhysicalOrVirtualEnum;
    string_map["IFCPHYSICALQUANTITY"                           ] = Type::IfcPhysicalQuantity;
    string_map["IFCPHYSICALSIMPLEQUANTITY"                     ] = Type::IfcPhysicalSimpleQuantity;
    string_map["IFCPILE"                                       ] = Type::IfcPile;
    string_map["IFCPILECONSTRUCTIONENUM"                       ] = Type::IfcPileConstructionEnum;
    string_map["IFCPILETYPEENUM"                               ] = Type::IfcPileTypeEnum;
    string_map["IFCPIPEFITTINGTYPE"                            ] = Type::IfcPipeFittingType;
    string_map["IFCPIPEFITTINGTYPEENUM"                        ] = Type::IfcPipeFittingTypeEnum;
    string_map["IFCPIPESEGMENTTYPE"                            ] = Type::IfcPipeSegmentType;
    string_map["IFCPIPESEGMENTTYPEENUM"                        ] = Type::IfcPipeSegmentTypeEnum;
    string_map["IFCPIXELTEXTURE"                               ] = Type::IfcPixelTexture;
    string_map["IFCPLACEMENT"                                  ] = Type::IfcPlacement;
    string_map["IFCPLANARBOX"                                  ] = Type::IfcPlanarBox;
    string_map["IFCPLANAREXTENT"                               ] = Type::IfcPlanarExtent;
    string_map["IFCPLANARFORCEMEASURE"                         ] = Type::IfcPlanarForceMeasure;
    string_map["IFCPLANE"                                      ] = Type::IfcPlane;
    string_map["IFCPLANEANGLEMEASURE"                          ] = Type::IfcPlaneAngleMeasure;
    string_map["IFCPLATE"                                      ] = Type::IfcPlate;
    string_map["IFCPLATETYPE"                                  ] = Type::IfcPlateType;
    string_map["IFCPLATETYPEENUM"                              ] = Type::IfcPlateTypeEnum;
    string_map["IFCPOINT"                                      ] = Type::IfcPoint;
    string_map["IFCPOINTONCURVE"                               ] = Type::IfcPointOnCurve;
    string_map["IFCPOINTONSURFACE"                             ] = Type::IfcPointOnSurface;
    string_map["IFCPOINTORVERTEXPOINT"                         ] = Type::IfcPointOrVertexPoint;
    string_map["IFCPOLYGONALBOUNDEDHALFSPACE"                  ] = Type::IfcPolygonalBoundedHalfSpace;
    string_map["IFCPOLYLINE"                                   ] = Type::IfcPolyline;
    string_map["IFCPOLYLOOP"                                   ] = Type::IfcPolyLoop;
    string_map["IFCPORT"                                       ] = Type::IfcPort;
    string_map["IFCPOSITIVELENGTHMEASURE"                      ] = Type::IfcPositiveLengthMeasure;
    string_map["IFCPOSITIVEPLANEANGLEMEASURE"                  ] = Type::IfcPositivePlaneAngleMeasure;
    string_map["IFCPOSITIVERATIOMEASURE"                       ] = Type::IfcPositiveRatioMeasure;
    string_map["IFCPOSTALADDRESS"                              ] = Type::IfcPostalAddress;
    string_map["IFCPOWERMEASURE"                               ] = Type::IfcPowerMeasure;
    string_map["IFCPREDEFINEDCOLOUR"                           ] = Type::IfcPreDefinedColour;
    string_map["IFCPREDEFINEDCURVEFONT"                        ] = Type::IfcPreDefinedCurveFont;
    string_map["IFCPREDEFINEDDIMENSIONSYMBOL"                  ] = Type::IfcPreDefinedDimensionSymbol;
    string_map["IFCPREDEFINEDITEM"                             ] = Type::IfcPreDefinedItem;
    string_map["IFCPREDEFINEDPOINTMARKERSYMBOL"                ] = Type::IfcPreDefinedPointMarkerSymbol;
    string_map["IFCPREDEFINEDSYMBOL"                           ] = Type::IfcPreDefinedSymbol;
    string_map["IFCPREDEFINEDTERMINATORSYMBOL"                 ] = Type::IfcPreDefinedTerminatorSymbol;
    string_map["IFCPREDEFINEDTEXTFONT"                         ] = Type::IfcPreDefinedTextFont;
    string_map["IFCPRESENTABLETEXT"                            ] = Type::IfcPresentableText;
    string_map["IFCPRESENTATIONLAYERASSIGNMENT"                ] = Type::IfcPresentationLayerAssignment;
    string_map["IFCPRESENTATIONLAYERWITHSTYLE"                 ] = Type::IfcPresentationLayerWithStyle;
    string_map["IFCPRESENTATIONSTYLE"                          ] = Type::IfcPresentationStyle;
    string_map["IFCPRESENTATIONSTYLEASSIGNMENT"                ] = Type::IfcPresentationStyleAssignment;
    string_map["IFCPRESENTATIONSTYLESELECT"                    ] = Type::IfcPresentationStyleSelect;
    string_map["IFCPRESSUREMEASURE"                            ] = Type::IfcPressureMeasure;
    string_map["IFCPROCEDURE"                                  ] = Type::IfcProcedure;
    string_map["IFCPROCEDURETYPEENUM"                          ] = Type::IfcProcedureTypeEnum;
    string_map["IFCPROCESS"                                    ] = Type::IfcProcess;
    string_map["IFCPRODUCT"                                    ] = Type::IfcProduct;
    string_map["IFCPRODUCTDEFINITIONSHAPE"                     ] = Type::IfcProductDefinitionShape;
    string_map["IFCPRODUCTREPRESENTATION"                      ] = Type::IfcProductRepresentation;
    string_map["IFCPRODUCTSOFCOMBUSTIONPROPERTIES"             ] = Type::IfcProductsOfCombustionProperties;
    string_map["IFCPROFILEDEF"                                 ] = Type::IfcProfileDef;
    string_map["IFCPROFILEPROPERTIES"                          ] = Type::IfcProfileProperties;
    string_map["IFCPROFILETYPEENUM"                            ] = Type::IfcProfileTypeEnum;
    string_map["IFCPROJECT"                                    ] = Type::IfcProject;
    string_map["IFCPROJECTEDORTRUELENGTHENUM"                  ] = Type::IfcProjectedOrTrueLengthEnum;
    string_map["IFCPROJECTIONCURVE"                            ] = Type::IfcProjectionCurve;
    string_map["IFCPROJECTIONELEMENT"                          ] = Type::IfcProjectionElement;
    string_map["IFCPROJECTORDER"                               ] = Type::IfcProjectOrder;
    string_map["IFCPROJECTORDERRECORD"                         ] = Type::IfcProjectOrderRecord;
    string_map["IFCPROJECTORDERRECORDTYPEENUM"                 ] = Type::IfcProjectOrderRecordTypeEnum;
    string_map["IFCPROJECTORDERTYPEENUM"                       ] = Type::IfcProjectOrderTypeEnum;
    string_map["IFCPROPERTY"                                   ] = Type::IfcProperty;
    string_map["IFCPROPERTYBOUNDEDVALUE"                       ] = Type::IfcPropertyBoundedValue;
    string_map["IFCPROPERTYCONSTRAINTRELATIONSHIP"             ] = Type::IfcPropertyConstraintRelationship;
    string_map["IFCPROPERTYDEFINITION"                         ] = Type::IfcPropertyDefinition;
    string_map["IFCPROPERTYDEPENDENCYRELATIONSHIP"             ] = Type::IfcPropertyDependencyRelationship;
    string_map["IFCPROPERTYENUMERATEDVALUE"                    ] = Type::IfcPropertyEnumeratedValue;
    string_map["IFCPROPERTYENUMERATION"                        ] = Type::IfcPropertyEnumeration;
    string_map["IFCPROPERTYLISTVALUE"                          ] = Type::IfcPropertyListValue;
    string_map["IFCPROPERTYREFERENCEVALUE"                     ] = Type::IfcPropertyReferenceValue;
    string_map["IFCPROPERTYSET"                                ] = Type::IfcPropertySet;
    string_map["IFCPROPERTYSETDEFINITION"                      ] = Type::IfcPropertySetDefinition;
    string_map["IFCPROPERTYSINGLEVALUE"                        ] = Type::IfcPropertySingleValue;
    string_map["IFCPROPERTYSOURCEENUM"                         ] = Type::IfcPropertySourceEnum;
    string_map["IFCPROPERTYTABLEVALUE"                         ] = Type::IfcPropertyTableValue;
    string_map["IFCPROTECTIVEDEVICETYPE"                       ] = Type::IfcProtectiveDeviceType;
    string_map["IFCPROTECTIVEDEVICETYPEENUM"                   ] = Type::IfcProtectiveDeviceTypeEnum;
    string_map["IFCPROXY"                                      ] = Type::IfcProxy;
    string_map["IFCPUMPTYPE"                                   ] = Type::IfcPumpType;
    string_map["IFCPUMPTYPEENUM"                               ] = Type::IfcPumpTypeEnum;
    string_map["IFCQUANTITYAREA"                               ] = Type::IfcQuantityArea;
    string_map["IFCQUANTITYCOUNT"                              ] = Type::IfcQuantityCount;
    string_map["IFCQUANTITYLENGTH"                             ] = Type::IfcQuantityLength;
    string_map["IFCQUANTITYTIME"                               ] = Type::IfcQuantityTime;
    string_map["IFCQUANTITYVOLUME"                             ] = Type::IfcQuantityVolume;
    string_map["IFCQUANTITYWEIGHT"                             ] = Type::IfcQuantityWeight;
    string_map["IFCRADIOACTIVITYMEASURE"                       ] = Type::IfcRadioActivityMeasure;
    string_map["IFCRADIUSDIMENSION"                            ] = Type::IfcRadiusDimension;
    string_map["IFCRAILING"                                    ] = Type::IfcRailing;
    string_map["IFCRAILINGTYPE"                                ] = Type::IfcRailingType;
    string_map["IFCRAILINGTYPEENUM"                            ] = Type::IfcRailingTypeEnum;
    string_map["IFCRAMP"                                       ] = Type::IfcRamp;
    string_map["IFCRAMPFLIGHT"                                 ] = Type::IfcRampFlight;
    string_map["IFCRAMPFLIGHTTYPE"                             ] = Type::IfcRampFlightType;
    string_map["IFCRAMPFLIGHTTYPEENUM"                         ] = Type::IfcRampFlightTypeEnum;
    string_map["IFCRAMPTYPEENUM"                               ] = Type::IfcRampTypeEnum;
    string_map["IFCRATIOMEASURE"                               ] = Type::IfcRatioMeasure;
    string_map["IFCRATIONALBEZIERCURVE"                        ] = Type::IfcRationalBezierCurve;
    string_map["IFCREAL"                                       ] = Type::IfcReal;
    string_map["IFCRECTANGLEHOLLOWPROFILEDEF"                  ] = Type::IfcRectangleHollowProfileDef;
    string_map["IFCRECTANGLEPROFILEDEF"                        ] = Type::IfcRectangleProfileDef;
    string_map["IFCRECTANGULARPYRAMID"                         ] = Type::IfcRectangularPyramid;
    string_map["IFCRECTANGULARTRIMMEDSURFACE"                  ] = Type::IfcRectangularTrimmedSurface;
    string_map["IFCREFERENCESVALUEDOCUMENT"                    ] = Type::IfcReferencesValueDocument;
    string_map["IFCREFLECTANCEMETHODENUM"                      ] = Type::IfcReflectanceMethodEnum;
    string_map["IFCREGULARTIMESERIES"                          ] = Type::IfcRegularTimeSeries;
    string_map["IFCREINFORCEMENTBARPROPERTIES"                 ] = Type::IfcReinforcementBarProperties;
    string_map["IFCREINFORCEMENTDEFINITIONPROPERTIES"          ] = Type::IfcReinforcementDefinitionProperties;
    string_map["IFCREINFORCINGBAR"                             ] = Type::IfcReinforcingBar;
    string_map["IFCREINFORCINGBARROLEENUM"                     ] = Type::IfcReinforcingBarRoleEnum;
    string_map["IFCREINFORCINGBARSURFACEENUM"                  ] = Type::IfcReinforcingBarSurfaceEnum;
    string_map["IFCREINFORCINGELEMENT"                         ] = Type::IfcReinforcingElement;
    string_map["IFCREINFORCINGMESH"                            ] = Type::IfcReinforcingMesh;
    string_map["IFCRELAGGREGATES"                              ] = Type::IfcRelAggregates;
    string_map["IFCRELASSIGNS"                                 ] = Type::IfcRelAssigns;
    string_map["IFCRELASSIGNSTASKS"                            ] = Type::IfcRelAssignsTasks;
    string_map["IFCRELASSIGNSTOACTOR"                          ] = Type::IfcRelAssignsToActor;
    string_map["IFCRELASSIGNSTOCONTROL"                        ] = Type::IfcRelAssignsToControl;
    string_map["IFCRELASSIGNSTOGROUP"                          ] = Type::IfcRelAssignsToGroup;
    string_map["IFCRELASSIGNSTOPROCESS"                        ] = Type::IfcRelAssignsToProcess;
    string_map["IFCRELASSIGNSTOPRODUCT"                        ] = Type::IfcRelAssignsToProduct;
    string_map["IFCRELASSIGNSTOPROJECTORDER"                   ] = Type::IfcRelAssignsToProjectOrder;
    string_map["IFCRELASSIGNSTORESOURCE"                       ] = Type::IfcRelAssignsToResource;
    string_map["IFCRELASSOCIATES"                              ] = Type::IfcRelAssociates;
    string_map["IFCRELASSOCIATESAPPLIEDVALUE"                  ] = Type::IfcRelAssociatesAppliedValue;
    string_map["IFCRELASSOCIATESAPPROVAL"                      ] = Type::IfcRelAssociatesApproval;
    string_map["IFCRELASSOCIATESCLASSIFICATION"                ] = Type::IfcRelAssociatesClassification;
    string_map["IFCRELASSOCIATESCONSTRAINT"                    ] = Type::IfcRelAssociatesConstraint;
    string_map["IFCRELASSOCIATESDOCUMENT"                      ] = Type::IfcRelAssociatesDocument;
    string_map["IFCRELASSOCIATESLIBRARY"                       ] = Type::IfcRelAssociatesLibrary;
    string_map["IFCRELASSOCIATESMATERIAL"                      ] = Type::IfcRelAssociatesMaterial;
    string_map["IFCRELASSOCIATESPROFILEPROPERTIES"             ] = Type::IfcRelAssociatesProfileProperties;
    string_map["IFCRELATIONSHIP"                               ] = Type::IfcRelationship;
    string_map["IFCRELAXATION"                                 ] = Type::IfcRelaxation;
    string_map["IFCRELCONNECTS"                                ] = Type::IfcRelConnects;
    string_map["IFCRELCONNECTSELEMENTS"                        ] = Type::IfcRelConnectsElements;
    string_map["IFCRELCONNECTSPATHELEMENTS"                    ] = Type::IfcRelConnectsPathElements;
    string_map["IFCRELCONNECTSPORTS"                           ] = Type::IfcRelConnectsPorts;
    string_map["IFCRELCONNECTSPORTTOELEMENT"                   ] = Type::IfcRelConnectsPortToElement;
    string_map["IFCRELCONNECTSSTRUCTURALACTIVITY"              ] = Type::IfcRelConnectsStructuralActivity;
    string_map["IFCRELCONNECTSSTRUCTURALELEMENT"               ] = Type::IfcRelConnectsStructuralElement;
    string_map["IFCRELCONNECTSSTRUCTURALMEMBER"                ] = Type::IfcRelConnectsStructuralMember;
    string_map["IFCRELCONNECTSWITHECCENTRICITY"                ] = Type::IfcRelConnectsWithEccentricity;
    string_map["IFCRELCONNECTSWITHREALIZINGELEMENTS"           ] = Type::IfcRelConnectsWithRealizingElements;
    string_map["IFCRELCONTAINEDINSPATIALSTRUCTURE"             ] = Type::IfcRelContainedInSpatialStructure;
    string_map["IFCRELCOVERSBLDGELEMENTS"                      ] = Type::IfcRelCoversBldgElements;
    string_map["IFCRELCOVERSSPACES"                            ] = Type::IfcRelCoversSpaces;
    string_map["IFCRELDECOMPOSES"                              ] = Type::IfcRelDecomposes;
    string_map["IFCRELDEFINES"                                 ] = Type::IfcRelDefines;
    string_map["IFCRELDEFINESBYPROPERTIES"                     ] = Type::IfcRelDefinesByProperties;
    string_map["IFCRELDEFINESBYTYPE"                           ] = Type::IfcRelDefinesByType;
    string_map["IFCRELFILLSELEMENT"                            ] = Type::IfcRelFillsElement;
    string_map["IFCRELFLOWCONTROLELEMENTS"                     ] = Type::IfcRelFlowControlElements;
    string_map["IFCRELINTERACTIONREQUIREMENTS"                 ] = Type::IfcRelInteractionRequirements;
    string_map["IFCRELNESTS"                                   ] = Type::IfcRelNests;
    string_map["IFCRELOCCUPIESSPACES"                          ] = Type::IfcRelOccupiesSpaces;
    string_map["IFCRELOVERRIDESPROPERTIES"                     ] = Type::IfcRelOverridesProperties;
    string_map["IFCRELPROJECTSELEMENT"                         ] = Type::IfcRelProjectsElement;
    string_map["IFCRELREFERENCEDINSPATIALSTRUCTURE"            ] = Type::IfcRelReferencedInSpatialStructure;
    string_map["IFCRELSCHEDULESCOSTITEMS"                      ] = Type::IfcRelSchedulesCostItems;
    string_map["IFCRELSEQUENCE"                                ] = Type::IfcRelSequence;
    string_map["IFCRELSERVICESBUILDINGS"                       ] = Type::IfcRelServicesBuildings;
    string_map["IFCRELSPACEBOUNDARY"                           ] = Type::IfcRelSpaceBoundary;
    string_map["IFCRELVOIDSELEMENT"                            ] = Type::IfcRelVoidsElement;
    string_map["IFCREPRESENTATION"                             ] = Type::IfcRepresentation;
    string_map["IFCREPRESENTATIONCONTEXT"                      ] = Type::IfcRepresentationContext;
    string_map["IFCREPRESENTATIONITEM"                         ] = Type::IfcRepresentationItem;
    string_map["IFCREPRESENTATIONMAP"                          ] = Type::IfcRepresentationMap;
    string_map["IFCRESOURCE"                                   ] = Type::IfcResource;
    string_map["IFCRESOURCECONSUMPTIONENUM"                    ] = Type::IfcResourceConsumptionEnum;
    string_map["IFCREVOLVEDAREASOLID"                          ] = Type::IfcRevolvedAreaSolid;
    string_map["IFCRIBPLATEDIRECTIONENUM"                      ] = Type::IfcRibPlateDirectionEnum;
    string_map["IFCRIBPLATEPROFILEPROPERTIES"                  ] = Type::IfcRibPlateProfileProperties;
    string_map["IFCRIGHTCIRCULARCONE"                          ] = Type::IfcRightCircularCone;
    string_map["IFCRIGHTCIRCULARCYLINDER"                      ] = Type::IfcRightCircularCylinder;
    string_map["IFCROLEENUM"                                   ] = Type::IfcRoleEnum;
    string_map["IFCROOF"                                       ] = Type::IfcRoof;
    string_map["IFCROOFTYPEENUM"                               ] = Type::IfcRoofTypeEnum;
    string_map["IFCROOT"                                       ] = Type::IfcRoot;
    string_map["IFCROTATIONALFREQUENCYMEASURE"                 ] = Type::IfcRotationalFrequencyMeasure;
    string_map["IFCROTATIONALMASSMEASURE"                      ] = Type::IfcRotationalMassMeasure;
    string_map["IFCROTATIONALSTIFFNESSMEASURE"                 ] = Type::IfcRotationalStiffnessMeasure;
    string_map["IFCROUNDEDEDGEFEATURE"                         ] = Type::IfcRoundedEdgeFeature;
    string_map["IFCROUNDEDRECTANGLEPROFILEDEF"                 ] = Type::IfcRoundedRectangleProfileDef;
    string_map["IFCSANITARYTERMINALTYPE"                       ] = Type::IfcSanitaryTerminalType;
    string_map["IFCSANITARYTERMINALTYPEENUM"                   ] = Type::IfcSanitaryTerminalTypeEnum;
    string_map["IFCSCHEDULETIMECONTROL"                        ] = Type::IfcScheduleTimeControl;
    string_map["IFCSECONDINMINUTE"                             ] = Type::IfcSecondInMinute;
    string_map["IFCSECTIONALAREAINTEGRALMEASURE"               ] = Type::IfcSectionalAreaIntegralMeasure;
    string_map["IFCSECTIONEDSPINE"                             ] = Type::IfcSectionedSpine;
    string_map["IFCSECTIONMODULUSMEASURE"                      ] = Type::IfcSectionModulusMeasure;
    string_map["IFCSECTIONPROPERTIES"                          ] = Type::IfcSectionProperties;
    string_map["IFCSECTIONREINFORCEMENTPROPERTIES"             ] = Type::IfcSectionReinforcementProperties;
    string_map["IFCSECTIONTYPEENUM"                            ] = Type::IfcSectionTypeEnum;
    string_map["IFCSENSORTYPE"                                 ] = Type::IfcSensorType;
    string_map["IFCSENSORTYPEENUM"                             ] = Type::IfcSensorTypeEnum;
    string_map["IFCSEQUENCEENUM"                               ] = Type::IfcSequenceEnum;
    string_map["IFCSERVICELIFE"                                ] = Type::IfcServiceLife;
    string_map["IFCSERVICELIFEFACTOR"                          ] = Type::IfcServiceLifeFactor;
    string_map["IFCSERVICELIFEFACTORTYPEENUM"                  ] = Type::IfcServiceLifeFactorTypeEnum;
    string_map["IFCSERVICELIFETYPEENUM"                        ] = Type::IfcServiceLifeTypeEnum;
    string_map["IFCSHAPEASPECT"                                ] = Type::IfcShapeAspect;
    string_map["IFCSHAPEMODEL"                                 ] = Type::IfcShapeModel;
    string_map["IFCSHAPEREPRESENTATION"                        ] = Type::IfcShapeRepresentation;
    string_map["IFCSHEARMODULUSMEASURE"                        ] = Type::IfcShearModulusMeasure;
    string_map["IFCSHELL"                                      ] = Type::IfcShell;
    string_map["IFCSHELLBASEDSURFACEMODEL"                     ] = Type::IfcShellBasedSurfaceModel;
    string_map["IFCSIMPLEPROPERTY"                             ] = Type::IfcSimpleProperty;
    string_map["IFCSIMPLEVALUE"                                ] = Type::IfcSimpleValue;
    string_map["IFCSIPREFIX"                                   ] = Type::IfcSIPrefix;
    string_map["IFCSITE"                                       ] = Type::IfcSite;
    string_map["IFCSIUNIT"                                     ] = Type::IfcSIUnit;
    string_map["IFCSIUNITNAME"                                 ] = Type::IfcSIUnitName;
    string_map["IFCSIZESELECT"                                 ] = Type::IfcSizeSelect;
    string_map["IFCSLAB"                                       ] = Type::IfcSlab;
    string_map["IFCSLABTYPE"                                   ] = Type::IfcSlabType;
    string_map["IFCSLABTYPEENUM"                               ] = Type::IfcSlabTypeEnum;
    string_map["IFCSLIPPAGECONNECTIONCONDITION"                ] = Type::IfcSlippageConnectionCondition;
    string_map["IFCSOLIDANGLEMEASURE"                          ] = Type::IfcSolidAngleMeasure;
    string_map["IFCSOLIDMODEL"                                 ] = Type::IfcSolidModel;
    string_map["IFCSOUNDPOWERMEASURE"                          ] = Type::IfcSoundPowerMeasure;
    string_map["IFCSOUNDPRESSUREMEASURE"                       ] = Type::IfcSoundPressureMeasure;
    string_map["IFCSOUNDPROPERTIES"                            ] = Type::IfcSoundProperties;
    string_map["IFCSOUNDSCALEENUM"                             ] = Type::IfcSoundScaleEnum;
    string_map["IFCSOUNDVALUE"                                 ] = Type::IfcSoundValue;
    string_map["IFCSPACE"                                      ] = Type::IfcSpace;
    string_map["IFCSPACEHEATERTYPE"                            ] = Type::IfcSpaceHeaterType;
    string_map["IFCSPACEHEATERTYPEENUM"                        ] = Type::IfcSpaceHeaterTypeEnum;
    string_map["IFCSPACEPROGRAM"                               ] = Type::IfcSpaceProgram;
    string_map["IFCSPACETHERMALLOADPROPERTIES"                 ] = Type::IfcSpaceThermalLoadProperties;
    string_map["IFCSPACETYPE"                                  ] = Type::IfcSpaceType;
    string_map["IFCSPACETYPEENUM"                              ] = Type::IfcSpaceTypeEnum;
    string_map["IFCSPATIALSTRUCTUREELEMENT"                    ] = Type::IfcSpatialStructureElement;
    string_map["IFCSPATIALSTRUCTUREELEMENTTYPE"                ] = Type::IfcSpatialStructureElementType;
    string_map["IFCSPECIFICHEATCAPACITYMEASURE"                ] = Type::IfcSpecificHeatCapacityMeasure;
    string_map["IFCSPECULAREXPONENT"                           ] = Type::IfcSpecularExponent;
    string_map["IFCSPECULARHIGHLIGHTSELECT"                    ] = Type::IfcSpecularHighlightSelect;
    string_map["IFCSPECULARROUGHNESS"                          ] = Type::IfcSpecularRoughness;
    string_map["IFCSPHERE"                                     ] = Type::IfcSphere;
    string_map["IFCSTACKTERMINALTYPE"                          ] = Type::IfcStackTerminalType;
    string_map["IFCSTACKTERMINALTYPEENUM"                      ] = Type::IfcStackTerminalTypeEnum;
    string_map["IFCSTAIR"                                      ] = Type::IfcStair;
    string_map["IFCSTAIRFLIGHT"                                ] = Type::IfcStairFlight;
    string_map["IFCSTAIRFLIGHTTYPE"                            ] = Type::IfcStairFlightType;
    string_map["IFCSTAIRFLIGHTTYPEENUM"                        ] = Type::IfcStairFlightTypeEnum;
    string_map["IFCSTAIRTYPEENUM"                              ] = Type::IfcStairTypeEnum;
    string_map["IFCSTATEENUM"                                  ] = Type::IfcStateEnum;
    string_map["IFCSTRUCTURALACTION"                           ] = Type::IfcStructuralAction;
    string_map["IFCSTRUCTURALACTIVITY"                         ] = Type::IfcStructuralActivity;
    string_map["IFCSTRUCTURALACTIVITYASSIGNMENTSELECT"         ] = Type::IfcStructuralActivityAssignmentSelect;
    string_map["IFCSTRUCTURALANALYSISMODEL"                    ] = Type::IfcStructuralAnalysisModel;
    string_map["IFCSTRUCTURALCONNECTION"                       ] = Type::IfcStructuralConnection;
    string_map["IFCSTRUCTURALCONNECTIONCONDITION"              ] = Type::IfcStructuralConnectionCondition;
    string_map["IFCSTRUCTURALCURVECONNECTION"                  ] = Type::IfcStructuralCurveConnection;
    string_map["IFCSTRUCTURALCURVEMEMBER"                      ] = Type::IfcStructuralCurveMember;
    string_map["IFCSTRUCTURALCURVEMEMBERVARYING"               ] = Type::IfcStructuralCurveMemberVarying;
    string_map["IFCSTRUCTURALCURVETYPEENUM"                    ] = Type::IfcStructuralCurveTypeEnum;
    string_map["IFCSTRUCTURALITEM"                             ] = Type::IfcStructuralItem;
    string_map["IFCSTRUCTURALLINEARACTION"                     ] = Type::IfcStructuralLinearAction;
    string_map["IFCSTRUCTURALLINEARACTIONVARYING"              ] = Type::IfcStructuralLinearActionVarying;
    string_map["IFCSTRUCTURALLOAD"                             ] = Type::IfcStructuralLoad;
    string_map["IFCSTRUCTURALLOADGROUP"                        ] = Type::IfcStructuralLoadGroup;
    string_map["IFCSTRUCTURALLOADLINEARFORCE"                  ] = Type::IfcStructuralLoadLinearForce;
    string_map["IFCSTRUCTURALLOADPLANARFORCE"                  ] = Type::IfcStructuralLoadPlanarForce;
    string_map["IFCSTRUCTURALLOADSINGLEDISPLACEMENT"           ] = Type::IfcStructuralLoadSingleDisplacement;
    string_map["IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION" ] = Type::IfcStructuralLoadSingleDisplacementDistortion;
    string_map["IFCSTRUCTURALLOADSINGLEFORCE"                  ] = Type::IfcStructuralLoadSingleForce;
    string_map["IFCSTRUCTURALLOADSINGLEFORCEWARPING"           ] = Type::IfcStructuralLoadSingleForceWarping;
    string_map["IFCSTRUCTURALLOADSTATIC"                       ] = Type::IfcStructuralLoadStatic;
    string_map["IFCSTRUCTURALLOADTEMPERATURE"                  ] = Type::IfcStructuralLoadTemperature;
    string_map["IFCSTRUCTURALMEMBER"                           ] = Type::IfcStructuralMember;
    string_map["IFCSTRUCTURALPLANARACTION"                     ] = Type::IfcStructuralPlanarAction;
    string_map["IFCSTRUCTURALPLANARACTIONVARYING"              ] = Type::IfcStructuralPlanarActionVarying;
    string_map["IFCSTRUCTURALPOINTACTION"                      ] = Type::IfcStructuralPointAction;
    string_map["IFCSTRUCTURALPOINTCONNECTION"                  ] = Type::IfcStructuralPointConnection;
    string_map["IFCSTRUCTURALPOINTREACTION"                    ] = Type::IfcStructuralPointReaction;
    string_map["IFCSTRUCTURALPROFILEPROPERTIES"                ] = Type::IfcStructuralProfileProperties;
    string_map["IFCSTRUCTURALREACTION"                         ] = Type::IfcStructuralReaction;
    string_map["IFCSTRUCTURALRESULTGROUP"                      ] = Type::IfcStructuralResultGroup;
    string_map["IFCSTRUCTURALSTEELPROFILEPROPERTIES"           ] = Type::IfcStructuralSteelProfileProperties;
    string_map["IFCSTRUCTURALSURFACECONNECTION"                ] = Type::IfcStructuralSurfaceConnection;
    string_map["IFCSTRUCTURALSURFACEMEMBER"                    ] = Type::IfcStructuralSurfaceMember;
    string_map["IFCSTRUCTURALSURFACEMEMBERVARYING"             ] = Type::IfcStructuralSurfaceMemberVarying;
    string_map["IFCSTRUCTURALSURFACETYPEENUM"                  ] = Type::IfcStructuralSurfaceTypeEnum;
    string_map["IFCSTRUCTUREDDIMENSIONCALLOUT"                 ] = Type::IfcStructuredDimensionCallout;
    string_map["IFCSTYLEDITEM"                                 ] = Type::IfcStyledItem;
    string_map["IFCSTYLEDREPRESENTATION"                       ] = Type::IfcStyledRepresentation;
    string_map["IFCSTYLEMODEL"                                 ] = Type::IfcStyleModel;
    string_map["IFCSUBCONTRACTRESOURCE"                        ] = Type::IfcSubContractResource;
    string_map["IFCSUBEDGE"                                    ] = Type::IfcSubedge;
    string_map["IFCSURFACE"                                    ] = Type::IfcSurface;
    string_map["IFCSURFACECURVESWEPTAREASOLID"                 ] = Type::IfcSurfaceCurveSweptAreaSolid;
    string_map["IFCSURFACEOFLINEAREXTRUSION"                   ] = Type::IfcSurfaceOfLinearExtrusion;
    string_map["IFCSURFACEOFREVOLUTION"                        ] = Type::IfcSurfaceOfRevolution;
    string_map["IFCSURFACEORFACESURFACE"                       ] = Type::IfcSurfaceOrFaceSurface;
    string_map["IFCSURFACESIDE"                                ] = Type::IfcSurfaceSide;
    string_map["IFCSURFACESTYLE"                               ] = Type::IfcSurfaceStyle;
    string_map["IFCSURFACESTYLEELEMENTSELECT"                  ] = Type::IfcSurfaceStyleElementSelect;
    string_map["IFCSURFACESTYLELIGHTING"                       ] = Type::IfcSurfaceStyleLighting;
    string_map["IFCSURFACESTYLEREFRACTION"                     ] = Type::IfcSurfaceStyleRefraction;
    string_map["IFCSURFACESTYLERENDERING"                      ] = Type::IfcSurfaceStyleRendering;
    string_map["IFCSURFACESTYLESHADING"                        ] = Type::IfcSurfaceStyleShading;
    string_map["IFCSURFACESTYLEWITHTEXTURES"                   ] = Type::IfcSurfaceStyleWithTextures;
    string_map["IFCSURFACETEXTURE"                             ] = Type::IfcSurfaceTexture;
    string_map["IFCSURFACETEXTUREENUM"                         ] = Type::IfcSurfaceTextureEnum;
    string_map["IFCSWEPTAREASOLID"                             ] = Type::IfcSweptAreaSolid;
    string_map["IFCSWEPTDISKSOLID"                             ] = Type::IfcSweptDiskSolid;
    string_map["IFCSWEPTSURFACE"                               ] = Type::IfcSweptSurface;
    string_map["IFCSWITCHINGDEVICETYPE"                        ] = Type::IfcSwitchingDeviceType;
    string_map["IFCSWITCHINGDEVICETYPEENUM"                    ] = Type::IfcSwitchingDeviceTypeEnum;
    string_map["IFCSYMBOLSTYLE"                                ] = Type::IfcSymbolStyle;
    string_map["IFCSYMBOLSTYLESELECT"                          ] = Type::IfcSymbolStyleSelect;
    string_map["IFCSYSTEM"                                     ] = Type::IfcSystem;
    string_map["IFCSYSTEMFURNITUREELEMENTTYPE"                 ] = Type::IfcSystemFurnitureElementType;
    string_map["IFCTABLE"                                      ] = Type::IfcTable;
    string_map["IFCTABLEROW"                                   ] = Type::IfcTableRow;
    string_map["IFCTANKTYPE"                                   ] = Type::IfcTankType;
    string_map["IFCTANKTYPEENUM"                               ] = Type::IfcTankTypeEnum;
    string_map["IFCTASK"                                       ] = Type::IfcTask;
    string_map["IFCTELECOMADDRESS"                             ] = Type::IfcTelecomAddress;
    string_map["IFCTEMPERATUREGRADIENTMEASURE"                 ] = Type::IfcTemperatureGradientMeasure;
    string_map["IFCTENDON"                                     ] = Type::IfcTendon;
    string_map["IFCTENDONANCHOR"                               ] = Type::IfcTendonAnchor;
    string_map["IFCTENDONTYPEENUM"                             ] = Type::IfcTendonTypeEnum;
    string_map["IFCTERMINATORSYMBOL"                           ] = Type::IfcTerminatorSymbol;
    string_map["IFCTEXT"                                       ] = Type::IfcText;
    string_map["IFCTEXTALIGNMENT"                              ] = Type::IfcTextAlignment;
    string_map["IFCTEXTDECORATION"                             ] = Type::IfcTextDecoration;
    string_map["IFCTEXTFONTNAME"                               ] = Type::IfcTextFontName;
    string_map["IFCTEXTFONTSELECT"                             ] = Type::IfcTextFontSelect;
    string_map["IFCTEXTLITERAL"                                ] = Type::IfcTextLiteral;
    string_map["IFCTEXTLITERALWITHEXTENT"                      ] = Type::IfcTextLiteralWithExtent;
    string_map["IFCTEXTPATH"                                   ] = Type::IfcTextPath;
    string_map["IFCTEXTSTYLE"                                  ] = Type::IfcTextStyle;
    string_map["IFCTEXTSTYLEFONTMODEL"                         ] = Type::IfcTextStyleFontModel;
    string_map["IFCTEXTSTYLEFORDEFINEDFONT"                    ] = Type::IfcTextStyleForDefinedFont;
    string_map["IFCTEXTSTYLESELECT"                            ] = Type::IfcTextStyleSelect;
    string_map["IFCTEXTSTYLETEXTMODEL"                         ] = Type::IfcTextStyleTextModel;
    string_map["IFCTEXTSTYLEWITHBOXCHARACTERISTICS"            ] = Type::IfcTextStyleWithBoxCharacteristics;
    string_map["IFCTEXTTRANSFORMATION"                         ] = Type::IfcTextTransformation;
    string_map["IFCTEXTURECOORDINATE"                          ] = Type::IfcTextureCoordinate;
    string_map["IFCTEXTURECOORDINATEGENERATOR"                 ] = Type::IfcTextureCoordinateGenerator;
    string_map["IFCTEXTUREMAP"                                 ] = Type::IfcTextureMap;
    string_map["IFCTEXTUREVERTEX"                              ] = Type::IfcTextureVertex;
    string_map["IFCTHERMALADMITTANCEMEASURE"                   ] = Type::IfcThermalAdmittanceMeasure;
    string_map["IFCTHERMALCONDUCTIVITYMEASURE"                 ] = Type::IfcThermalConductivityMeasure;
    string_map["IFCTHERMALEXPANSIONCOEFFICIENTMEASURE"         ] = Type::IfcThermalExpansionCoefficientMeasure;
    string_map["IFCTHERMALLOADSOURCEENUM"                      ] = Type::IfcThermalLoadSourceEnum;
    string_map["IFCTHERMALLOADTYPEENUM"                        ] = Type::IfcThermalLoadTypeEnum;
    string_map["IFCTHERMALMATERIALPROPERTIES"                  ] = Type::IfcThermalMaterialProperties;
    string_map["IFCTHERMALRESISTANCEMEASURE"                   ] = Type::IfcThermalResistanceMeasure;
    string_map["IFCTHERMALTRANSMITTANCEMEASURE"                ] = Type::IfcThermalTransmittanceMeasure;
    string_map["IFCTHERMODYNAMICTEMPERATUREMEASURE"            ] = Type::IfcThermodynamicTemperatureMeasure;
    string_map["IFCTIMEMEASURE"                                ] = Type::IfcTimeMeasure;
    string_map["IFCTIMESERIES"                                 ] = Type::IfcTimeSeries;
    string_map["IFCTIMESERIESDATATYPEENUM"                     ] = Type::IfcTimeSeriesDataTypeEnum;
    string_map["IFCTIMESERIESREFERENCERELATIONSHIP"            ] = Type::IfcTimeSeriesReferenceRelationship;
    string_map["IFCTIMESERIESSCHEDULE"                         ] = Type::IfcTimeSeriesSchedule;
    string_map["IFCTIMESERIESSCHEDULETYPEENUM"                 ] = Type::IfcTimeSeriesScheduleTypeEnum;
    string_map["IFCTIMESERIESVALUE"                            ] = Type::IfcTimeSeriesValue;
    string_map["IFCTIMESTAMP"                                  ] = Type::IfcTimeStamp;
    string_map["IFCTOPOLOGICALREPRESENTATIONITEM"              ] = Type::IfcTopologicalRepresentationItem;
    string_map["IFCTOPOLOGYREPRESENTATION"                     ] = Type::IfcTopologyRepresentation;
    string_map["IFCTORQUEMEASURE"                              ] = Type::IfcTorqueMeasure;
    string_map["IFCTRANSFORMERTYPE"                            ] = Type::IfcTransformerType;
    string_map["IFCTRANSFORMERTYPEENUM"                        ] = Type::IfcTransformerTypeEnum;
    string_map["IFCTRANSITIONCODE"                             ] = Type::IfcTransitionCode;
    string_map["IFCTRANSPORTELEMENT"                           ] = Type::IfcTransportElement;
    string_map["IFCTRANSPORTELEMENTTYPE"                       ] = Type::IfcTransportElementType;
    string_map["IFCTRANSPORTELEMENTTYPEENUM"                   ] = Type::IfcTransportElementTypeEnum;
    string_map["IFCTRAPEZIUMPROFILEDEF"                        ] = Type::IfcTrapeziumProfileDef;
    string_map["IFCTRIMMEDCURVE"                               ] = Type::IfcTrimmedCurve;
    string_map["IFCTRIMMINGPREFERENCE"                         ] = Type::IfcTrimmingPreference;
    string_map["IFCTRIMMINGSELECT"                             ] = Type::IfcTrimmingSelect;
    string_map["IFCTSHAPEPROFILEDEF"                           ] = Type::IfcTShapeProfileDef;
    string_map["IFCTUBEBUNDLETYPE"                             ] = Type::IfcTubeBundleType;
    string_map["IFCTUBEBUNDLETYPEENUM"                         ] = Type::IfcTubeBundleTypeEnum;
    string_map["IFCTWODIRECTIONREPEATFACTOR"                   ] = Type::IfcTwoDirectionRepeatFactor;
    string_map["IFCTYPEOBJECT"                                 ] = Type::IfcTypeObject;
    string_map["IFCTYPEPRODUCT"                                ] = Type::IfcTypeProduct;
    string_map["IFCUNIT"                                       ] = Type::IfcUnit;
    string_map["IFCUNITARYEQUIPMENTTYPE"                       ] = Type::IfcUnitaryEquipmentType;
    string_map["IFCUNITARYEQUIPMENTTYPEENUM"                   ] = Type::IfcUnitaryEquipmentTypeEnum;
    string_map["IFCUNITASSIGNMENT"                             ] = Type::IfcUnitAssignment;
    string_map["IFCUNITENUM"                                   ] = Type::IfcUnitEnum;
    string_map["IFCUSHAPEPROFILEDEF"                           ] = Type::IfcUShapeProfileDef;
    string_map["IFCVALUE"                                      ] = Type::IfcValue;
    string_map["IFCVALVETYPE"                                  ] = Type::IfcValveType;
    string_map["IFCVALVETYPEENUM"                              ] = Type::IfcValveTypeEnum;
    string_map["IFCVAPORPERMEABILITYMEASURE"                   ] = Type::IfcVaporPermeabilityMeasure;
    string_map["IFCVECTOR"                                     ] = Type::IfcVector;
    string_map["IFCVECTORORDIRECTION"                          ] = Type::IfcVectorOrDirection;
    string_map["IFCVERTEX"                                     ] = Type::IfcVertex;
    string_map["IFCVERTEXBASEDTEXTUREMAP"                      ] = Type::IfcVertexBasedTextureMap;
    string_map["IFCVERTEXLOOP"                                 ] = Type::IfcVertexLoop;
    string_map["IFCVERTEXPOINT"                                ] = Type::IfcVertexPoint;
    string_map["IFCVIBRATIONISOLATORTYPE"                      ] = Type::IfcVibrationIsolatorType;
    string_map["IFCVIBRATIONISOLATORTYPEENUM"                  ] = Type::IfcVibrationIsolatorTypeEnum;
    string_map["IFCVIRTUALELEMENT"                             ] = Type::IfcVirtualElement;
    string_map["IFCVIRTUALGRIDINTERSECTION"                    ] = Type::IfcVirtualGridIntersection;
    string_map["IFCVOLUMEMEASURE"                              ] = Type::IfcVolumeMeasure;
    string_map["IFCVOLUMETRICFLOWRATEMEASURE"                  ] = Type::IfcVolumetricFlowRateMeasure;
    string_map["IFCWALL"                                       ] = Type::IfcWall;
    string_map["IFCWALLSTANDARDCASE"                           ] = Type::IfcWallStandardCase;
    string_map["IFCWALLTYPE"                                   ] = Type::IfcWallType;
    string_map["IFCWALLTYPEENUM"                               ] = Type::IfcWallTypeEnum;
    string_map["IFCWARPINGCONSTANTMEASURE"                     ] = Type::IfcWarpingConstantMeasure;
    string_map["IFCWARPINGMOMENTMEASURE"                       ] = Type::IfcWarpingMomentMeasure;
    string_map["IFCWASTETERMINALTYPE"                          ] = Type::IfcWasteTerminalType;
    string_map["IFCWASTETERMINALTYPEENUM"                      ] = Type::IfcWasteTerminalTypeEnum;
    string_map["IFCWATERPROPERTIES"                            ] = Type::IfcWaterProperties;
    string_map["IFCWINDOW"                                     ] = Type::IfcWindow;
    string_map["IFCWINDOWLININGPROPERTIES"                     ] = Type::IfcWindowLiningProperties;
    string_map["IFCWINDOWPANELOPERATIONENUM"                   ] = Type::IfcWindowPanelOperationEnum;
    string_map["IFCWINDOWPANELPOSITIONENUM"                    ] = Type::IfcWindowPanelPositionEnum;
    string_map["IFCWINDOWPANELPROPERTIES"                      ] = Type::IfcWindowPanelProperties;
    string_map["IFCWINDOWSTYLE"                                ] = Type::IfcWindowStyle;
    string_map["IFCWINDOWSTYLECONSTRUCTIONENUM"                ] = Type::IfcWindowStyleConstructionEnum;
    string_map["IFCWINDOWSTYLEOPERATIONENUM"                   ] = Type::IfcWindowStyleOperationEnum;
    string_map["IFCWORKCONTROL"                                ] = Type::IfcWorkControl;
    string_map["IFCWORKCONTROLTYPEENUM"                        ] = Type::IfcWorkControlTypeEnum;
    string_map["IFCWORKPLAN"                                   ] = Type::IfcWorkPlan;
    string_map["IFCWORKSCHEDULE"                               ] = Type::IfcWorkSchedule;
    string_map["IFCYEARNUMBER"                                 ] = Type::IfcYearNumber;
    string_map["IFCZONE"                                       ] = Type::IfcZone;
    string_map["IFCZSHAPEPROFILEDEF"                           ] = Type::IfcZShapeProfileDef;
}

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

Type::Enum Type::Parent(Enum v){
    if (v < 0 || v >= 980) return (Enum)-1;
    if(v==Ifc2DCompositeCurve                           ) { return IfcCompositeCurve; }
    if(v==IfcActionRequest                              ) { return IfcControl; }
    if(v==IfcActor                                      ) { return IfcObject; }
    if(v==IfcActuatorType                               ) { return IfcDistributionControlElementType; }
    if(v==IfcAirTerminalBoxType                         ) { return IfcFlowControllerType; }
    if(v==IfcAirTerminalType                            ) { return IfcFlowTerminalType; }
    if(v==IfcAirToAirHeatRecoveryType                   ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcAlarmType                                  ) { return IfcDistributionControlElementType; }
    if(v==IfcAngularDimension                           ) { return IfcDimensionCurveDirectedCallout; }
    if(v==IfcAnnotation                                 ) { return IfcProduct; }
    if(v==IfcAnnotationCurveOccurrence                  ) { return IfcAnnotationOccurrence; }
    if(v==IfcAnnotationFillArea                         ) { return IfcGeometricRepresentationItem; }
    if(v==IfcAnnotationFillAreaOccurrence               ) { return IfcAnnotationOccurrence; }
    if(v==IfcAnnotationOccurrence                       ) { return IfcStyledItem; }
    if(v==IfcAnnotationSurface                          ) { return IfcGeometricRepresentationItem; }
    if(v==IfcAnnotationSurfaceOccurrence                ) { return IfcAnnotationOccurrence; }
    if(v==IfcAnnotationSymbolOccurrence                 ) { return IfcAnnotationOccurrence; }
    if(v==IfcAnnotationTextOccurrence                   ) { return IfcAnnotationOccurrence; }
    if(v==IfcArbitraryClosedProfileDef                  ) { return IfcProfileDef; }
    if(v==IfcArbitraryOpenProfileDef                    ) { return IfcProfileDef; }
    if(v==IfcArbitraryProfileDefWithVoids               ) { return IfcArbitraryClosedProfileDef; }
    if(v==IfcAsset                                      ) { return IfcGroup; }
    if(v==IfcAsymmetricIShapeProfileDef                 ) { return IfcIShapeProfileDef; }
    if(v==IfcAxis1Placement                             ) { return IfcPlacement; }
    if(v==IfcAxis2Placement2D                           ) { return IfcPlacement; }
    if(v==IfcAxis2Placement3D                           ) { return IfcPlacement; }
    if(v==IfcBSplineCurve                               ) { return IfcBoundedCurve; }
    if(v==IfcBeam                                       ) { return IfcBuildingElement; }
    if(v==IfcBeamType                                   ) { return IfcBuildingElementType; }
    if(v==IfcBezierCurve                                ) { return IfcBSplineCurve; }
    if(v==IfcBlobTexture                                ) { return IfcSurfaceTexture; }
    if(v==IfcBlock                                      ) { return IfcCsgPrimitive3D; }
    if(v==IfcBoilerType                                 ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcBooleanClippingResult                      ) { return IfcBooleanResult; }
    if(v==IfcBooleanResult                              ) { return IfcGeometricRepresentationItem; }
    if(v==IfcBoundaryEdgeCondition                      ) { return IfcBoundaryCondition; }
    if(v==IfcBoundaryFaceCondition                      ) { return IfcBoundaryCondition; }
    if(v==IfcBoundaryNodeCondition                      ) { return IfcBoundaryCondition; }
    if(v==IfcBoundaryNodeConditionWarping               ) { return IfcBoundaryNodeCondition; }
    if(v==IfcBoundedCurve                               ) { return IfcCurve; }
    if(v==IfcBoundedSurface                             ) { return IfcSurface; }
    if(v==IfcBoundingBox                                ) { return IfcGeometricRepresentationItem; }
    if(v==IfcBoxedHalfSpace                             ) { return IfcHalfSpaceSolid; }
    if(v==IfcBuilding                                   ) { return IfcSpatialStructureElement; }
    if(v==IfcBuildingElement                            ) { return IfcElement; }
    if(v==IfcBuildingElementComponent                   ) { return IfcBuildingElement; }
    if(v==IfcBuildingElementPart                        ) { return IfcBuildingElementComponent; }
    if(v==IfcBuildingElementProxy                       ) { return IfcBuildingElement; }
    if(v==IfcBuildingElementProxyType                   ) { return IfcBuildingElementType; }
    if(v==IfcBuildingElementType                        ) { return IfcElementType; }
    if(v==IfcBuildingStorey                             ) { return IfcSpatialStructureElement; }
    if(v==IfcCShapeProfileDef                           ) { return IfcParameterizedProfileDef; }
    if(v==IfcCableCarrierFittingType                    ) { return IfcFlowFittingType; }
    if(v==IfcCableCarrierSegmentType                    ) { return IfcFlowSegmentType; }
    if(v==IfcCableSegmentType                           ) { return IfcFlowSegmentType; }
    if(v==IfcCartesianPoint                             ) { return IfcPoint; }
    if(v==IfcCartesianTransformationOperator            ) { return IfcGeometricRepresentationItem; }
    if(v==IfcCartesianTransformationOperator2D          ) { return IfcCartesianTransformationOperator; }
    if(v==IfcCartesianTransformationOperator2DnonUniform) { return IfcCartesianTransformationOperator2D; }
    if(v==IfcCartesianTransformationOperator3D          ) { return IfcCartesianTransformationOperator; }
    if(v==IfcCartesianTransformationOperator3DnonUniform) { return IfcCartesianTransformationOperator3D; }
    if(v==IfcCenterLineProfileDef                       ) { return IfcArbitraryOpenProfileDef; }
    if(v==IfcChamferEdgeFeature                         ) { return IfcEdgeFeature; }
    if(v==IfcChillerType                                ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcCircle                                     ) { return IfcConic; }
    if(v==IfcCircleHollowProfileDef                     ) { return IfcCircleProfileDef; }
    if(v==IfcCircleProfileDef                           ) { return IfcParameterizedProfileDef; }
    if(v==IfcClassificationReference                    ) { return IfcExternalReference; }
    if(v==IfcClosedShell                                ) { return IfcConnectedFaceSet; }
    if(v==IfcCoilType                                   ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcColourRgb                                  ) { return IfcColourSpecification; }
    if(v==IfcColumn                                     ) { return IfcBuildingElement; }
    if(v==IfcColumnType                                 ) { return IfcBuildingElementType; }
    if(v==IfcComplexProperty                            ) { return IfcProperty; }
    if(v==IfcCompositeCurve                             ) { return IfcBoundedCurve; }
    if(v==IfcCompositeCurveSegment                      ) { return IfcGeometricRepresentationItem; }
    if(v==IfcCompositeProfileDef                        ) { return IfcProfileDef; }
    if(v==IfcCompressorType                             ) { return IfcFlowMovingDeviceType; }
    if(v==IfcCondenserType                              ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcCondition                                  ) { return IfcGroup; }
    if(v==IfcConditionCriterion                         ) { return IfcControl; }
    if(v==IfcConic                                      ) { return IfcCurve; }
    if(v==IfcConnectedFaceSet                           ) { return IfcTopologicalRepresentationItem; }
    if(v==IfcConnectionCurveGeometry                    ) { return IfcConnectionGeometry; }
    if(v==IfcConnectionPointEccentricity                ) { return IfcConnectionPointGeometry; }
    if(v==IfcConnectionPointGeometry                    ) { return IfcConnectionGeometry; }
    if(v==IfcConnectionPortGeometry                     ) { return IfcConnectionGeometry; }
    if(v==IfcConnectionSurfaceGeometry                  ) { return IfcConnectionGeometry; }
    if(v==IfcConstructionEquipmentResource              ) { return IfcConstructionResource; }
    if(v==IfcConstructionMaterialResource               ) { return IfcConstructionResource; }
    if(v==IfcConstructionProductResource                ) { return IfcConstructionResource; }
    if(v==IfcConstructionResource                       ) { return IfcResource; }
    if(v==IfcContextDependentUnit                       ) { return IfcNamedUnit; }
    if(v==IfcControl                                    ) { return IfcObject; }
    if(v==IfcControllerType                             ) { return IfcDistributionControlElementType; }
    if(v==IfcConversionBasedUnit                        ) { return IfcNamedUnit; }
    if(v==IfcCooledBeamType                             ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcCoolingTowerType                           ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcCostItem                                   ) { return IfcControl; }
    if(v==IfcCostSchedule                               ) { return IfcControl; }
    if(v==IfcCostValue                                  ) { return IfcAppliedValue; }
    if(v==IfcCovering                                   ) { return IfcBuildingElement; }
    if(v==IfcCoveringType                               ) { return IfcBuildingElementType; }
    if(v==IfcCraneRailAShapeProfileDef                  ) { return IfcParameterizedProfileDef; }
    if(v==IfcCraneRailFShapeProfileDef                  ) { return IfcParameterizedProfileDef; }
    if(v==IfcCrewResource                               ) { return IfcConstructionResource; }
    if(v==IfcCsgPrimitive3D                             ) { return IfcGeometricRepresentationItem; }
    if(v==IfcCsgSolid                                   ) { return IfcSolidModel; }
    if(v==IfcCurtainWall                                ) { return IfcBuildingElement; }
    if(v==IfcCurtainWallType                            ) { return IfcBuildingElementType; }
    if(v==IfcCurve                                      ) { return IfcGeometricRepresentationItem; }
    if(v==IfcCurveBoundedPlane                          ) { return IfcBoundedSurface; }
    if(v==IfcCurveStyle                                 ) { return IfcPresentationStyle; }
    if(v==IfcDamperType                                 ) { return IfcFlowControllerType; }
    if(v==IfcDefinedSymbol                              ) { return IfcGeometricRepresentationItem; }
    if(v==IfcDerivedProfileDef                          ) { return IfcProfileDef; }
    if(v==IfcDiameterDimension                          ) { return IfcDimensionCurveDirectedCallout; }
    if(v==IfcDimensionCalloutRelationship               ) { return IfcDraughtingCalloutRelationship; }
    if(v==IfcDimensionCurve                             ) { return IfcAnnotationCurveOccurrence; }
    if(v==IfcDimensionCurveDirectedCallout              ) { return IfcDraughtingCallout; }
    if(v==IfcDimensionCurveTerminator                   ) { return IfcTerminatorSymbol; }
    if(v==IfcDimensionPair                              ) { return IfcDraughtingCalloutRelationship; }
    if(v==IfcDirection                                  ) { return IfcGeometricRepresentationItem; }
    if(v==IfcDiscreteAccessory                          ) { return IfcElementComponent; }
    if(v==IfcDiscreteAccessoryType                      ) { return IfcElementComponentType; }
    if(v==IfcDistributionChamberElement                 ) { return IfcDistributionFlowElement; }
    if(v==IfcDistributionChamberElementType             ) { return IfcDistributionFlowElementType; }
    if(v==IfcDistributionControlElement                 ) { return IfcDistributionElement; }
    if(v==IfcDistributionControlElementType             ) { return IfcDistributionElementType; }
    if(v==IfcDistributionElement                        ) { return IfcElement; }
    if(v==IfcDistributionElementType                    ) { return IfcElementType; }
    if(v==IfcDistributionFlowElement                    ) { return IfcDistributionElement; }
    if(v==IfcDistributionFlowElementType                ) { return IfcDistributionElementType; }
    if(v==IfcDistributionPort                           ) { return IfcPort; }
    if(v==IfcDocumentReference                          ) { return IfcExternalReference; }
    if(v==IfcDoor                                       ) { return IfcBuildingElement; }
    if(v==IfcDoorLiningProperties                       ) { return IfcPropertySetDefinition; }
    if(v==IfcDoorPanelProperties                        ) { return IfcPropertySetDefinition; }
    if(v==IfcDoorStyle                                  ) { return IfcTypeProduct; }
    if(v==IfcDraughtingCallout                          ) { return IfcGeometricRepresentationItem; }
    if(v==IfcDraughtingPreDefinedColour                 ) { return IfcPreDefinedColour; }
    if(v==IfcDraughtingPreDefinedCurveFont              ) { return IfcPreDefinedCurveFont; }
    if(v==IfcDraughtingPreDefinedTextFont               ) { return IfcPreDefinedTextFont; }
    if(v==IfcDuctFittingType                            ) { return IfcFlowFittingType; }
    if(v==IfcDuctSegmentType                            ) { return IfcFlowSegmentType; }
    if(v==IfcDuctSilencerType                           ) { return IfcFlowTreatmentDeviceType; }
    if(v==IfcEdge                                       ) { return IfcTopologicalRepresentationItem; }
    if(v==IfcEdgeCurve                                  ) { return IfcEdge; }
    if(v==IfcEdgeFeature                                ) { return IfcFeatureElementSubtraction; }
    if(v==IfcEdgeLoop                                   ) { return IfcLoop; }
    if(v==IfcElectricApplianceType                      ) { return IfcFlowTerminalType; }
    if(v==IfcElectricDistributionPoint                  ) { return IfcFlowController; }
    if(v==IfcElectricFlowStorageDeviceType              ) { return IfcFlowStorageDeviceType; }
    if(v==IfcElectricGeneratorType                      ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcElectricHeaterType                         ) { return IfcFlowTerminalType; }
    if(v==IfcElectricMotorType                          ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcElectricTimeControlType                    ) { return IfcFlowControllerType; }
    if(v==IfcElectricalBaseProperties                   ) { return IfcEnergyProperties; }
    if(v==IfcElectricalCircuit                          ) { return IfcSystem; }
    if(v==IfcElectricalElement                          ) { return IfcElement; }
    if(v==IfcElement                                    ) { return IfcProduct; }
    if(v==IfcElementAssembly                            ) { return IfcElement; }
    if(v==IfcElementComponent                           ) { return IfcElement; }
    if(v==IfcElementComponentType                       ) { return IfcElementType; }
    if(v==IfcElementQuantity                            ) { return IfcPropertySetDefinition; }
    if(v==IfcElementType                                ) { return IfcTypeProduct; }
    if(v==IfcElementarySurface                          ) { return IfcSurface; }
    if(v==IfcEllipse                                    ) { return IfcConic; }
    if(v==IfcEllipseProfileDef                          ) { return IfcParameterizedProfileDef; }
    if(v==IfcEnergyConversionDevice                     ) { return IfcDistributionFlowElement; }
    if(v==IfcEnergyConversionDeviceType                 ) { return IfcDistributionFlowElementType; }
    if(v==IfcEnergyProperties                           ) { return IfcPropertySetDefinition; }
    if(v==IfcEnvironmentalImpactValue                   ) { return IfcAppliedValue; }
    if(v==IfcEquipmentElement                           ) { return IfcElement; }
    if(v==IfcEquipmentStandard                          ) { return IfcControl; }
    if(v==IfcEvaporativeCoolerType                      ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcEvaporatorType                             ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcExtendedMaterialProperties                 ) { return IfcMaterialProperties; }
    if(v==IfcExternallyDefinedHatchStyle                ) { return IfcExternalReference; }
    if(v==IfcExternallyDefinedSurfaceStyle              ) { return IfcExternalReference; }
    if(v==IfcExternallyDefinedSymbol                    ) { return IfcExternalReference; }
    if(v==IfcExternallyDefinedTextFont                  ) { return IfcExternalReference; }
    if(v==IfcExtrudedAreaSolid                          ) { return IfcSweptAreaSolid; }
    if(v==IfcFace                                       ) { return IfcTopologicalRepresentationItem; }
    if(v==IfcFaceBasedSurfaceModel                      ) { return IfcGeometricRepresentationItem; }
    if(v==IfcFaceBound                                  ) { return IfcTopologicalRepresentationItem; }
    if(v==IfcFaceOuterBound                             ) { return IfcFaceBound; }
    if(v==IfcFaceSurface                                ) { return IfcFace; }
    if(v==IfcFacetedBrep                                ) { return IfcManifoldSolidBrep; }
    if(v==IfcFacetedBrepWithVoids                       ) { return IfcManifoldSolidBrep; }
    if(v==IfcFailureConnectionCondition                 ) { return IfcStructuralConnectionCondition; }
    if(v==IfcFanType                                    ) { return IfcFlowMovingDeviceType; }
    if(v==IfcFastener                                   ) { return IfcElementComponent; }
    if(v==IfcFastenerType                               ) { return IfcElementComponentType; }
    if(v==IfcFeatureElement                             ) { return IfcElement; }
    if(v==IfcFeatureElementAddition                     ) { return IfcFeatureElement; }
    if(v==IfcFeatureElementSubtraction                  ) { return IfcFeatureElement; }
    if(v==IfcFillAreaStyle                              ) { return IfcPresentationStyle; }
    if(v==IfcFillAreaStyleHatching                      ) { return IfcGeometricRepresentationItem; }
    if(v==IfcFillAreaStyleTileSymbolWithStyle           ) { return IfcGeometricRepresentationItem; }
    if(v==IfcFillAreaStyleTiles                         ) { return IfcGeometricRepresentationItem; }
    if(v==IfcFilterType                                 ) { return IfcFlowTreatmentDeviceType; }
    if(v==IfcFireSuppressionTerminalType                ) { return IfcFlowTerminalType; }
    if(v==IfcFlowController                             ) { return IfcDistributionFlowElement; }
    if(v==IfcFlowControllerType                         ) { return IfcDistributionFlowElementType; }
    if(v==IfcFlowFitting                                ) { return IfcDistributionFlowElement; }
    if(v==IfcFlowFittingType                            ) { return IfcDistributionFlowElementType; }
    if(v==IfcFlowInstrumentType                         ) { return IfcDistributionControlElementType; }
    if(v==IfcFlowMeterType                              ) { return IfcFlowControllerType; }
    if(v==IfcFlowMovingDevice                           ) { return IfcDistributionFlowElement; }
    if(v==IfcFlowMovingDeviceType                       ) { return IfcDistributionFlowElementType; }
    if(v==IfcFlowSegment                                ) { return IfcDistributionFlowElement; }
    if(v==IfcFlowSegmentType                            ) { return IfcDistributionFlowElementType; }
    if(v==IfcFlowStorageDevice                          ) { return IfcDistributionFlowElement; }
    if(v==IfcFlowStorageDeviceType                      ) { return IfcDistributionFlowElementType; }
    if(v==IfcFlowTerminal                               ) { return IfcDistributionFlowElement; }
    if(v==IfcFlowTerminalType                           ) { return IfcDistributionFlowElementType; }
    if(v==IfcFlowTreatmentDevice                        ) { return IfcDistributionFlowElement; }
    if(v==IfcFlowTreatmentDeviceType                    ) { return IfcDistributionFlowElementType; }
    if(v==IfcFluidFlowProperties                        ) { return IfcPropertySetDefinition; }
    if(v==IfcFooting                                    ) { return IfcBuildingElement; }
    if(v==IfcFuelProperties                             ) { return IfcMaterialProperties; }
    if(v==IfcFurnishingElement                          ) { return IfcElement; }
    if(v==IfcFurnishingElementType                      ) { return IfcElementType; }
    if(v==IfcFurnitureStandard                          ) { return IfcControl; }
    if(v==IfcFurnitureType                              ) { return IfcFurnishingElementType; }
    if(v==IfcGasTerminalType                            ) { return IfcFlowTerminalType; }
    if(v==IfcGeneralMaterialProperties                  ) { return IfcMaterialProperties; }
    if(v==IfcGeneralProfileProperties                   ) { return IfcProfileProperties; }
    if(v==IfcGeometricCurveSet                          ) { return IfcGeometricSet; }
    if(v==IfcGeometricRepresentationContext             ) { return IfcRepresentationContext; }
    if(v==IfcGeometricRepresentationItem                ) { return IfcRepresentationItem; }
    if(v==IfcGeometricRepresentationSubContext          ) { return IfcGeometricRepresentationContext; }
    if(v==IfcGeometricSet                               ) { return IfcGeometricRepresentationItem; }
    if(v==IfcGrid                                       ) { return IfcProduct; }
    if(v==IfcGridPlacement                              ) { return IfcObjectPlacement; }
    if(v==IfcGroup                                      ) { return IfcObject; }
    if(v==IfcHalfSpaceSolid                             ) { return IfcGeometricRepresentationItem; }
    if(v==IfcHeatExchangerType                          ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcHumidifierType                             ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcHygroscopicMaterialProperties              ) { return IfcMaterialProperties; }
    if(v==IfcIShapeProfileDef                           ) { return IfcParameterizedProfileDef; }
    if(v==IfcImageTexture                               ) { return IfcSurfaceTexture; }
    if(v==IfcInventory                                  ) { return IfcGroup; }
    if(v==IfcIrregularTimeSeries                        ) { return IfcTimeSeries; }
    if(v==IfcJunctionBoxType                            ) { return IfcFlowFittingType; }
    if(v==IfcLShapeProfileDef                           ) { return IfcParameterizedProfileDef; }
    if(v==IfcLaborResource                              ) { return IfcConstructionResource; }
    if(v==IfcLampType                                   ) { return IfcFlowTerminalType; }
    if(v==IfcLibraryReference                           ) { return IfcExternalReference; }
    if(v==IfcLightFixtureType                           ) { return IfcFlowTerminalType; }
    if(v==IfcLightSource                                ) { return IfcGeometricRepresentationItem; }
    if(v==IfcLightSourceAmbient                         ) { return IfcLightSource; }
    if(v==IfcLightSourceDirectional                     ) { return IfcLightSource; }
    if(v==IfcLightSourceGoniometric                     ) { return IfcLightSource; }
    if(v==IfcLightSourcePositional                      ) { return IfcLightSource; }
    if(v==IfcLightSourceSpot                            ) { return IfcLightSourcePositional; }
    if(v==IfcLine                                       ) { return IfcCurve; }
    if(v==IfcLinearDimension                            ) { return IfcDimensionCurveDirectedCallout; }
    if(v==IfcLocalPlacement                             ) { return IfcObjectPlacement; }
    if(v==IfcLoop                                       ) { return IfcTopologicalRepresentationItem; }
    if(v==IfcManifoldSolidBrep                          ) { return IfcSolidModel; }
    if(v==IfcMappedItem                                 ) { return IfcRepresentationItem; }
    if(v==IfcMaterialDefinitionRepresentation           ) { return IfcProductRepresentation; }
    if(v==IfcMechanicalConcreteMaterialProperties       ) { return IfcMechanicalMaterialProperties; }
    if(v==IfcMechanicalFastener                         ) { return IfcFastener; }
    if(v==IfcMechanicalFastenerType                     ) { return IfcFastenerType; }
    if(v==IfcMechanicalMaterialProperties               ) { return IfcMaterialProperties; }
    if(v==IfcMechanicalSteelMaterialProperties          ) { return IfcMechanicalMaterialProperties; }
    if(v==IfcMember                                     ) { return IfcBuildingElement; }
    if(v==IfcMemberType                                 ) { return IfcBuildingElementType; }
    if(v==IfcMetric                                     ) { return IfcConstraint; }
    if(v==IfcMotorConnectionType                        ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcMove                                       ) { return IfcTask; }
    if(v==IfcObject                                     ) { return IfcObjectDefinition; }
    if(v==IfcObjectDefinition                           ) { return IfcRoot; }
    if(v==IfcObjective                                  ) { return IfcConstraint; }
    if(v==IfcOccupant                                   ) { return IfcActor; }
    if(v==IfcOffsetCurve2D                              ) { return IfcCurve; }
    if(v==IfcOffsetCurve3D                              ) { return IfcCurve; }
    if(v==IfcOneDirectionRepeatFactor                   ) { return IfcGeometricRepresentationItem; }
    if(v==IfcOpenShell                                  ) { return IfcConnectedFaceSet; }
    if(v==IfcOpeningElement                             ) { return IfcFeatureElementSubtraction; }
    if(v==IfcOpticalMaterialProperties                  ) { return IfcMaterialProperties; }
    if(v==IfcOrderAction                                ) { return IfcTask; }
    if(v==IfcOrientedEdge                               ) { return IfcEdge; }
    if(v==IfcOutletType                                 ) { return IfcFlowTerminalType; }
    if(v==IfcParameterizedProfileDef                    ) { return IfcProfileDef; }
    if(v==IfcPath                                       ) { return IfcTopologicalRepresentationItem; }
    if(v==IfcPerformanceHistory                         ) { return IfcControl; }
    if(v==IfcPermeableCoveringProperties                ) { return IfcPropertySetDefinition; }
    if(v==IfcPermit                                     ) { return IfcControl; }
    if(v==IfcPhysicalComplexQuantity                    ) { return IfcPhysicalQuantity; }
    if(v==IfcPhysicalSimpleQuantity                     ) { return IfcPhysicalQuantity; }
    if(v==IfcPile                                       ) { return IfcBuildingElement; }
    if(v==IfcPipeFittingType                            ) { return IfcFlowFittingType; }
    if(v==IfcPipeSegmentType                            ) { return IfcFlowSegmentType; }
    if(v==IfcPixelTexture                               ) { return IfcSurfaceTexture; }
    if(v==IfcPlacement                                  ) { return IfcGeometricRepresentationItem; }
    if(v==IfcPlanarBox                                  ) { return IfcPlanarExtent; }
    if(v==IfcPlanarExtent                               ) { return IfcGeometricRepresentationItem; }
    if(v==IfcPlane                                      ) { return IfcElementarySurface; }
    if(v==IfcPlate                                      ) { return IfcBuildingElement; }
    if(v==IfcPlateType                                  ) { return IfcBuildingElementType; }
    if(v==IfcPoint                                      ) { return IfcGeometricRepresentationItem; }
    if(v==IfcPointOnCurve                               ) { return IfcPoint; }
    if(v==IfcPointOnSurface                             ) { return IfcPoint; }
    if(v==IfcPolyLoop                                   ) { return IfcLoop; }
    if(v==IfcPolygonalBoundedHalfSpace                  ) { return IfcHalfSpaceSolid; }
    if(v==IfcPolyline                                   ) { return IfcBoundedCurve; }
    if(v==IfcPort                                       ) { return IfcProduct; }
    if(v==IfcPostalAddress                              ) { return IfcAddress; }
    if(v==IfcPreDefinedColour                           ) { return IfcPreDefinedItem; }
    if(v==IfcPreDefinedCurveFont                        ) { return IfcPreDefinedItem; }
    if(v==IfcPreDefinedDimensionSymbol                  ) { return IfcPreDefinedSymbol; }
    if(v==IfcPreDefinedPointMarkerSymbol                ) { return IfcPreDefinedSymbol; }
    if(v==IfcPreDefinedSymbol                           ) { return IfcPreDefinedItem; }
    if(v==IfcPreDefinedTerminatorSymbol                 ) { return IfcPreDefinedSymbol; }
    if(v==IfcPreDefinedTextFont                         ) { return IfcPreDefinedItem; }
    if(v==IfcPresentationLayerWithStyle                 ) { return IfcPresentationLayerAssignment; }
    if(v==IfcProcedure                                  ) { return IfcProcess; }
    if(v==IfcProcess                                    ) { return IfcObject; }
    if(v==IfcProduct                                    ) { return IfcObject; }
    if(v==IfcProductDefinitionShape                     ) { return IfcProductRepresentation; }
    if(v==IfcProductsOfCombustionProperties             ) { return IfcMaterialProperties; }
    if(v==IfcProject                                    ) { return IfcObject; }
    if(v==IfcProjectOrder                               ) { return IfcControl; }
    if(v==IfcProjectOrderRecord                         ) { return IfcControl; }
    if(v==IfcProjectionCurve                            ) { return IfcAnnotationCurveOccurrence; }
    if(v==IfcProjectionElement                          ) { return IfcFeatureElementAddition; }
    if(v==IfcPropertyBoundedValue                       ) { return IfcSimpleProperty; }
    if(v==IfcPropertyDefinition                         ) { return IfcRoot; }
    if(v==IfcPropertyEnumeratedValue                    ) { return IfcSimpleProperty; }
    if(v==IfcPropertyListValue                          ) { return IfcSimpleProperty; }
    if(v==IfcPropertyReferenceValue                     ) { return IfcSimpleProperty; }
    if(v==IfcPropertySet                                ) { return IfcPropertySetDefinition; }
    if(v==IfcPropertySetDefinition                      ) { return IfcPropertyDefinition; }
    if(v==IfcPropertySingleValue                        ) { return IfcSimpleProperty; }
    if(v==IfcPropertyTableValue                         ) { return IfcSimpleProperty; }
    if(v==IfcProtectiveDeviceType                       ) { return IfcFlowControllerType; }
    if(v==IfcProxy                                      ) { return IfcProduct; }
    if(v==IfcPumpType                                   ) { return IfcFlowMovingDeviceType; }
    if(v==IfcQuantityArea                               ) { return IfcPhysicalSimpleQuantity; }
    if(v==IfcQuantityCount                              ) { return IfcPhysicalSimpleQuantity; }
    if(v==IfcQuantityLength                             ) { return IfcPhysicalSimpleQuantity; }
    if(v==IfcQuantityTime                               ) { return IfcPhysicalSimpleQuantity; }
    if(v==IfcQuantityVolume                             ) { return IfcPhysicalSimpleQuantity; }
    if(v==IfcQuantityWeight                             ) { return IfcPhysicalSimpleQuantity; }
    if(v==IfcRadiusDimension                            ) { return IfcDimensionCurveDirectedCallout; }
    if(v==IfcRailing                                    ) { return IfcBuildingElement; }
    if(v==IfcRailingType                                ) { return IfcBuildingElementType; }
    if(v==IfcRamp                                       ) { return IfcBuildingElement; }
    if(v==IfcRampFlight                                 ) { return IfcBuildingElement; }
    if(v==IfcRampFlightType                             ) { return IfcBuildingElementType; }
    if(v==IfcRationalBezierCurve                        ) { return IfcBezierCurve; }
    if(v==IfcRectangleHollowProfileDef                  ) { return IfcRectangleProfileDef; }
    if(v==IfcRectangleProfileDef                        ) { return IfcParameterizedProfileDef; }
    if(v==IfcRectangularPyramid                         ) { return IfcCsgPrimitive3D; }
    if(v==IfcRectangularTrimmedSurface                  ) { return IfcBoundedSurface; }
    if(v==IfcRegularTimeSeries                          ) { return IfcTimeSeries; }
    if(v==IfcReinforcementDefinitionProperties          ) { return IfcPropertySetDefinition; }
    if(v==IfcReinforcingBar                             ) { return IfcReinforcingElement; }
    if(v==IfcReinforcingElement                         ) { return IfcBuildingElementComponent; }
    if(v==IfcReinforcingMesh                            ) { return IfcReinforcingElement; }
    if(v==IfcRelAggregates                              ) { return IfcRelDecomposes; }
    if(v==IfcRelAssigns                                 ) { return IfcRelationship; }
    if(v==IfcRelAssignsTasks                            ) { return IfcRelAssignsToControl; }
    if(v==IfcRelAssignsToActor                          ) { return IfcRelAssigns; }
    if(v==IfcRelAssignsToControl                        ) { return IfcRelAssigns; }
    if(v==IfcRelAssignsToGroup                          ) { return IfcRelAssigns; }
    if(v==IfcRelAssignsToProcess                        ) { return IfcRelAssigns; }
    if(v==IfcRelAssignsToProduct                        ) { return IfcRelAssigns; }
    if(v==IfcRelAssignsToProjectOrder                   ) { return IfcRelAssignsToControl; }
    if(v==IfcRelAssignsToResource                       ) { return IfcRelAssigns; }
    if(v==IfcRelAssociates                              ) { return IfcRelationship; }
    if(v==IfcRelAssociatesAppliedValue                  ) { return IfcRelAssociates; }
    if(v==IfcRelAssociatesApproval                      ) { return IfcRelAssociates; }
    if(v==IfcRelAssociatesClassification                ) { return IfcRelAssociates; }
    if(v==IfcRelAssociatesConstraint                    ) { return IfcRelAssociates; }
    if(v==IfcRelAssociatesDocument                      ) { return IfcRelAssociates; }
    if(v==IfcRelAssociatesLibrary                       ) { return IfcRelAssociates; }
    if(v==IfcRelAssociatesMaterial                      ) { return IfcRelAssociates; }
    if(v==IfcRelAssociatesProfileProperties             ) { return IfcRelAssociates; }
    if(v==IfcRelConnects                                ) { return IfcRelationship; }
    if(v==IfcRelConnectsElements                        ) { return IfcRelConnects; }
    if(v==IfcRelConnectsPathElements                    ) { return IfcRelConnectsElements; }
    if(v==IfcRelConnectsPortToElement                   ) { return IfcRelConnects; }
    if(v==IfcRelConnectsPorts                           ) { return IfcRelConnects; }
    if(v==IfcRelConnectsStructuralActivity              ) { return IfcRelConnects; }
    if(v==IfcRelConnectsStructuralElement               ) { return IfcRelConnects; }
    if(v==IfcRelConnectsStructuralMember                ) { return IfcRelConnects; }
    if(v==IfcRelConnectsWithEccentricity                ) { return IfcRelConnectsStructuralMember; }
    if(v==IfcRelConnectsWithRealizingElements           ) { return IfcRelConnectsElements; }
    if(v==IfcRelContainedInSpatialStructure             ) { return IfcRelConnects; }
    if(v==IfcRelCoversBldgElements                      ) { return IfcRelConnects; }
    if(v==IfcRelCoversSpaces                            ) { return IfcRelConnects; }
    if(v==IfcRelDecomposes                              ) { return IfcRelationship; }
    if(v==IfcRelDefines                                 ) { return IfcRelationship; }
    if(v==IfcRelDefinesByProperties                     ) { return IfcRelDefines; }
    if(v==IfcRelDefinesByType                           ) { return IfcRelDefines; }
    if(v==IfcRelFillsElement                            ) { return IfcRelConnects; }
    if(v==IfcRelFlowControlElements                     ) { return IfcRelConnects; }
    if(v==IfcRelInteractionRequirements                 ) { return IfcRelConnects; }
    if(v==IfcRelNests                                   ) { return IfcRelDecomposes; }
    if(v==IfcRelOccupiesSpaces                          ) { return IfcRelAssignsToActor; }
    if(v==IfcRelOverridesProperties                     ) { return IfcRelDefinesByProperties; }
    if(v==IfcRelProjectsElement                         ) { return IfcRelConnects; }
    if(v==IfcRelReferencedInSpatialStructure            ) { return IfcRelConnects; }
    if(v==IfcRelSchedulesCostItems                      ) { return IfcRelAssignsToControl; }
    if(v==IfcRelSequence                                ) { return IfcRelConnects; }
    if(v==IfcRelServicesBuildings                       ) { return IfcRelConnects; }
    if(v==IfcRelSpaceBoundary                           ) { return IfcRelConnects; }
    if(v==IfcRelVoidsElement                            ) { return IfcRelConnects; }
    if(v==IfcRelationship                               ) { return IfcRoot; }
    if(v==IfcResource                                   ) { return IfcObject; }
    if(v==IfcRevolvedAreaSolid                          ) { return IfcSweptAreaSolid; }
    if(v==IfcRibPlateProfileProperties                  ) { return IfcProfileProperties; }
    if(v==IfcRightCircularCone                          ) { return IfcCsgPrimitive3D; }
    if(v==IfcRightCircularCylinder                      ) { return IfcCsgPrimitive3D; }
    if(v==IfcRoof                                       ) { return IfcBuildingElement; }
    if(v==IfcRoundedEdgeFeature                         ) { return IfcEdgeFeature; }
    if(v==IfcRoundedRectangleProfileDef                 ) { return IfcRectangleProfileDef; }
    if(v==IfcSIUnit                                     ) { return IfcNamedUnit; }
    if(v==IfcSanitaryTerminalType                       ) { return IfcFlowTerminalType; }
    if(v==IfcScheduleTimeControl                        ) { return IfcControl; }
    if(v==IfcSectionedSpine                             ) { return IfcGeometricRepresentationItem; }
    if(v==IfcSensorType                                 ) { return IfcDistributionControlElementType; }
    if(v==IfcServiceLife                                ) { return IfcControl; }
    if(v==IfcServiceLifeFactor                          ) { return IfcPropertySetDefinition; }
    if(v==IfcShapeModel                                 ) { return IfcRepresentation; }
    if(v==IfcShapeRepresentation                        ) { return IfcShapeModel; }
    if(v==IfcShellBasedSurfaceModel                     ) { return IfcGeometricRepresentationItem; }
    if(v==IfcSimpleProperty                             ) { return IfcProperty; }
    if(v==IfcSite                                       ) { return IfcSpatialStructureElement; }
    if(v==IfcSlab                                       ) { return IfcBuildingElement; }
    if(v==IfcSlabType                                   ) { return IfcBuildingElementType; }
    if(v==IfcSlippageConnectionCondition                ) { return IfcStructuralConnectionCondition; }
    if(v==IfcSolidModel                                 ) { return IfcGeometricRepresentationItem; }
    if(v==IfcSoundProperties                            ) { return IfcPropertySetDefinition; }
    if(v==IfcSoundValue                                 ) { return IfcPropertySetDefinition; }
    if(v==IfcSpace                                      ) { return IfcSpatialStructureElement; }
    if(v==IfcSpaceHeaterType                            ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcSpaceProgram                               ) { return IfcControl; }
    if(v==IfcSpaceThermalLoadProperties                 ) { return IfcPropertySetDefinition; }
    if(v==IfcSpaceType                                  ) { return IfcSpatialStructureElementType; }
    if(v==IfcSpatialStructureElement                    ) { return IfcProduct; }
    if(v==IfcSpatialStructureElementType                ) { return IfcElementType; }
    if(v==IfcSphere                                     ) { return IfcCsgPrimitive3D; }
    if(v==IfcStackTerminalType                          ) { return IfcFlowTerminalType; }
    if(v==IfcStair                                      ) { return IfcBuildingElement; }
    if(v==IfcStairFlight                                ) { return IfcBuildingElement; }
    if(v==IfcStairFlightType                            ) { return IfcBuildingElementType; }
    if(v==IfcStructuralAction                           ) { return IfcStructuralActivity; }
    if(v==IfcStructuralActivity                         ) { return IfcProduct; }
    if(v==IfcStructuralAnalysisModel                    ) { return IfcSystem; }
    if(v==IfcStructuralConnection                       ) { return IfcStructuralItem; }
    if(v==IfcStructuralCurveConnection                  ) { return IfcStructuralConnection; }
    if(v==IfcStructuralCurveMember                      ) { return IfcStructuralMember; }
    if(v==IfcStructuralCurveMemberVarying               ) { return IfcStructuralCurveMember; }
    if(v==IfcStructuralItem                             ) { return IfcProduct; }
    if(v==IfcStructuralLinearAction                     ) { return IfcStructuralAction; }
    if(v==IfcStructuralLinearActionVarying              ) { return IfcStructuralLinearAction; }
    if(v==IfcStructuralLoadGroup                        ) { return IfcGroup; }
    if(v==IfcStructuralLoadLinearForce                  ) { return IfcStructuralLoadStatic; }
    if(v==IfcStructuralLoadPlanarForce                  ) { return IfcStructuralLoadStatic; }
    if(v==IfcStructuralLoadSingleDisplacement           ) { return IfcStructuralLoadStatic; }
    if(v==IfcStructuralLoadSingleDisplacementDistortion ) { return IfcStructuralLoadSingleDisplacement; }
    if(v==IfcStructuralLoadSingleForce                  ) { return IfcStructuralLoadStatic; }
    if(v==IfcStructuralLoadSingleForceWarping           ) { return IfcStructuralLoadSingleForce; }
    if(v==IfcStructuralLoadStatic                       ) { return IfcStructuralLoad; }
    if(v==IfcStructuralLoadTemperature                  ) { return IfcStructuralLoadStatic; }
    if(v==IfcStructuralMember                           ) { return IfcStructuralItem; }
    if(v==IfcStructuralPlanarAction                     ) { return IfcStructuralAction; }
    if(v==IfcStructuralPlanarActionVarying              ) { return IfcStructuralPlanarAction; }
    if(v==IfcStructuralPointAction                      ) { return IfcStructuralAction; }
    if(v==IfcStructuralPointConnection                  ) { return IfcStructuralConnection; }
    if(v==IfcStructuralPointReaction                    ) { return IfcStructuralReaction; }
    if(v==IfcStructuralProfileProperties                ) { return IfcGeneralProfileProperties; }
    if(v==IfcStructuralReaction                         ) { return IfcStructuralActivity; }
    if(v==IfcStructuralResultGroup                      ) { return IfcGroup; }
    if(v==IfcStructuralSteelProfileProperties           ) { return IfcStructuralProfileProperties; }
    if(v==IfcStructuralSurfaceConnection                ) { return IfcStructuralConnection; }
    if(v==IfcStructuralSurfaceMember                    ) { return IfcStructuralMember; }
    if(v==IfcStructuralSurfaceMemberVarying             ) { return IfcStructuralSurfaceMember; }
    if(v==IfcStructuredDimensionCallout                 ) { return IfcDraughtingCallout; }
    if(v==IfcStyleModel                                 ) { return IfcRepresentation; }
    if(v==IfcStyledItem                                 ) { return IfcRepresentationItem; }
    if(v==IfcStyledRepresentation                       ) { return IfcStyleModel; }
    if(v==IfcSubContractResource                        ) { return IfcConstructionResource; }
    if(v==IfcSubedge                                    ) { return IfcEdge; }
    if(v==IfcSurface                                    ) { return IfcGeometricRepresentationItem; }
    if(v==IfcSurfaceCurveSweptAreaSolid                 ) { return IfcSweptAreaSolid; }
    if(v==IfcSurfaceOfLinearExtrusion                   ) { return IfcSweptSurface; }
    if(v==IfcSurfaceOfRevolution                        ) { return IfcSweptSurface; }
    if(v==IfcSurfaceStyle                               ) { return IfcPresentationStyle; }
    if(v==IfcSurfaceStyleRendering                      ) { return IfcSurfaceStyleShading; }
    if(v==IfcSweptAreaSolid                             ) { return IfcSolidModel; }
    if(v==IfcSweptDiskSolid                             ) { return IfcSolidModel; }
    if(v==IfcSweptSurface                               ) { return IfcSurface; }
    if(v==IfcSwitchingDeviceType                        ) { return IfcFlowControllerType; }
    if(v==IfcSymbolStyle                                ) { return IfcPresentationStyle; }
    if(v==IfcSystem                                     ) { return IfcGroup; }
    if(v==IfcSystemFurnitureElementType                 ) { return IfcFurnishingElementType; }
    if(v==IfcTShapeProfileDef                           ) { return IfcParameterizedProfileDef; }
    if(v==IfcTankType                                   ) { return IfcFlowStorageDeviceType; }
    if(v==IfcTask                                       ) { return IfcProcess; }
    if(v==IfcTelecomAddress                             ) { return IfcAddress; }
    if(v==IfcTendon                                     ) { return IfcReinforcingElement; }
    if(v==IfcTendonAnchor                               ) { return IfcReinforcingElement; }
    if(v==IfcTerminatorSymbol                           ) { return IfcAnnotationSymbolOccurrence; }
    if(v==IfcTextLiteral                                ) { return IfcGeometricRepresentationItem; }
    if(v==IfcTextLiteralWithExtent                      ) { return IfcTextLiteral; }
    if(v==IfcTextStyle                                  ) { return IfcPresentationStyle; }
    if(v==IfcTextStyleFontModel                         ) { return IfcPreDefinedTextFont; }
    if(v==IfcTextureCoordinateGenerator                 ) { return IfcTextureCoordinate; }
    if(v==IfcTextureMap                                 ) { return IfcTextureCoordinate; }
    if(v==IfcThermalMaterialProperties                  ) { return IfcMaterialProperties; }
    if(v==IfcTimeSeriesSchedule                         ) { return IfcControl; }
    if(v==IfcTopologicalRepresentationItem              ) { return IfcRepresentationItem; }
    if(v==IfcTopologyRepresentation                     ) { return IfcShapeModel; }
    if(v==IfcTransformerType                            ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcTransportElement                           ) { return IfcElement; }
    if(v==IfcTransportElementType                       ) { return IfcElementType; }
    if(v==IfcTrapeziumProfileDef                        ) { return IfcParameterizedProfileDef; }
    if(v==IfcTrimmedCurve                               ) { return IfcBoundedCurve; }
    if(v==IfcTubeBundleType                             ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcTwoDirectionRepeatFactor                   ) { return IfcOneDirectionRepeatFactor; }
    if(v==IfcTypeObject                                 ) { return IfcObjectDefinition; }
    if(v==IfcTypeProduct                                ) { return IfcTypeObject; }
    if(v==IfcUShapeProfileDef                           ) { return IfcParameterizedProfileDef; }
    if(v==IfcUnitaryEquipmentType                       ) { return IfcEnergyConversionDeviceType; }
    if(v==IfcValveType                                  ) { return IfcFlowControllerType; }
    if(v==IfcVector                                     ) { return IfcGeometricRepresentationItem; }
    if(v==IfcVertex                                     ) { return IfcTopologicalRepresentationItem; }
    if(v==IfcVertexLoop                                 ) { return IfcLoop; }
    if(v==IfcVertexPoint                                ) { return IfcVertex; }
    if(v==IfcVibrationIsolatorType                      ) { return IfcDiscreteAccessoryType; }
    if(v==IfcVirtualElement                             ) { return IfcElement; }
    if(v==IfcWall                                       ) { return IfcBuildingElement; }
    if(v==IfcWallStandardCase                           ) { return IfcWall; }
    if(v==IfcWallType                                   ) { return IfcBuildingElementType; }
    if(v==IfcWasteTerminalType                          ) { return IfcFlowTerminalType; }
    if(v==IfcWaterProperties                            ) { return IfcMaterialProperties; }
    if(v==IfcWindow                                     ) { return IfcBuildingElement; }
    if(v==IfcWindowLiningProperties                     ) { return IfcPropertySetDefinition; }
    if(v==IfcWindowPanelProperties                      ) { return IfcPropertySetDefinition; }
    if(v==IfcWindowStyle                                ) { return IfcTypeProduct; }
    if(v==IfcWorkControl                                ) { return IfcControl; }
    if(v==IfcWorkPlan                                   ) { return IfcWorkControl; }
    if(v==IfcWorkSchedule                               ) { return IfcWorkControl; }
    if(v==IfcZShapeProfileDef                           ) { return IfcParameterizedProfileDef; }
    if(v==IfcZone                                       ) { return IfcGroup; }
    return (Enum)-1;
}

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


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

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

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

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

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

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

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

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

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

IfcAheadOrBehind::IfcAheadOrBehind IfcAheadOrBehind::FromString(const std::string& s) {
    if (s == "AHEAD") return ::Ifc2x3::IfcAheadOrBehind::IfcAheadOrBehind_AHEAD;
    if (s == "BEHIND") return ::Ifc2x3::IfcAheadOrBehind::IfcAheadOrBehind_BEHIND;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum IfcAirTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "GRILLE") return ::Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalType_GRILLE;
    if (s == "REGISTER") return ::Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalType_REGISTER;
    if (s == "DIFFUSER") return ::Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalType_DIFFUSER;
    if (s == "EYEBALL") return ::Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalType_EYEBALL;
    if (s == "IRIS") return ::Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalType_IRIS;
    if (s == "LINEARGRILLE") return ::Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalType_LINEARGRILLE;
    if (s == "LINEARDIFFUSER") return ::Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalType_LINEARDIFFUSER;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IfcBenchmarkEnum::IfcBenchmarkEnum IfcBenchmarkEnum::FromString(const std::string& s) {
    if (s == "GREATERTHAN") return ::Ifc2x3::IfcBenchmarkEnum::IfcBenchmark_GREATERTHAN;
    if (s == "GREATERTHANOREQUALTO") return ::Ifc2x3::IfcBenchmarkEnum::IfcBenchmark_GREATERTHANOREQUALTO;
    if (s == "LESSTHAN") return ::Ifc2x3::IfcBenchmarkEnum::IfcBenchmark_LESSTHAN;
    if (s == "LESSTHANOREQUALTO") return ::Ifc2x3::IfcBenchmarkEnum::IfcBenchmark_LESSTHANOREQUALTO;
    if (s == "EQUALTO") return ::Ifc2x3::IfcBenchmarkEnum::IfcBenchmark_EQUALTO;
    if (s == "NOTEQUALTO") return ::Ifc2x3::IfcBenchmarkEnum::IfcBenchmark_NOTEQUALTO;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum IfcBuildingElementProxyTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc2x3::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IfcControllerTypeEnum::IfcControllerTypeEnum IfcControllerTypeEnum::FromString(const std::string& s) {
    if (s == "FLOATING") return ::Ifc2x3::IfcControllerTypeEnum::IfcControllerType_FLOATING;
    if (s == "PROPORTIONAL") return ::Ifc2x3::IfcControllerTypeEnum::IfcControllerType_PROPORTIONAL;
    if (s == "PROPORTIONALINTEGRAL") return ::Ifc2x3::IfcControllerTypeEnum::IfcControllerType_PROPORTIONALINTEGRAL;
    if (s == "PROPORTIONALINTEGRALDERIVATIVE") return ::Ifc2x3::IfcControllerTypeEnum::IfcControllerType_PROPORTIONALINTEGRALDERIVATIVE;
    if (s == "TIMEDTWOPOSITION") return ::Ifc2x3::IfcControllerTypeEnum::IfcControllerType_TIMEDTWOPOSITION;
    if (s == "TWOPOSITION") return ::Ifc2x3::IfcControllerTypeEnum::IfcControllerType_TWOPOSITION;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcControllerTypeEnum::IfcControllerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcControllerTypeEnum::IfcControllerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

const char* IfcCurrencyEnum::ToString(IfcCurrencyEnum v) {
    if ( v < 0 || v >= 83 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AED", "AES", "ATS", "AUD", "BBD", "BEG", "BGL", "BHD", "BMD", "BND", "BRL", "BSD", "BWP", "BZD", "CAD", "CBD", "CHF", "CLP", "CNY", "CYS", "CZK", "DDP", "DEM", "DKK", "EGL", "EST", "EUR", "FAK", "FIM", "FJD", "FKP", "FRF", "GBP", "GIP", "GMD", "GRX", "HKD", "HUF", "ICK", "IDR", "ILS", "INR", "IRP", "ITL", "JMD", "JOD", "JPY", "KES", "KRW", "KWD", "KYD", "LKR", "LUF", "MTL", "MUR", "MXN", "MYR", "NLG", "NZD", "OMR", "PGK", "PHP", "PKR", "PLN", "PTN", "QAR", "RUR", "SAR", "SCR", "SEK", "SGD", "SKP", "THB", "TRL", "TTD", "TWD", "USD", "VEB", "VND", "XEU", "ZAR", "ZWD", "NOK" };
    return names[v];
}

IfcCurrencyEnum::IfcCurrencyEnum IfcCurrencyEnum::FromString(const std::string& s) {
    if (s == "AED") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_AED;
    if (s == "AES") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_AES;
    if (s == "ATS") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_ATS;
    if (s == "AUD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_AUD;
    if (s == "BBD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_BBD;
    if (s == "BEG") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_BEG;
    if (s == "BGL") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_BGL;
    if (s == "BHD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_BHD;
    if (s == "BMD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_BMD;
    if (s == "BND") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_BND;
    if (s == "BRL") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_BRL;
    if (s == "BSD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_BSD;
    if (s == "BWP") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_BWP;
    if (s == "BZD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_BZD;
    if (s == "CAD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_CAD;
    if (s == "CBD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_CBD;
    if (s == "CHF") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_CHF;
    if (s == "CLP") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_CLP;
    if (s == "CNY") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_CNY;
    if (s == "CYS") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_CYS;
    if (s == "CZK") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_CZK;
    if (s == "DDP") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_DDP;
    if (s == "DEM") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_DEM;
    if (s == "DKK") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_DKK;
    if (s == "EGL") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_EGL;
    if (s == "EST") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_EST;
    if (s == "EUR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_EUR;
    if (s == "FAK") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_FAK;
    if (s == "FIM") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_FIM;
    if (s == "FJD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_FJD;
    if (s == "FKP") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_FKP;
    if (s == "FRF") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_FRF;
    if (s == "GBP") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_GBP;
    if (s == "GIP") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_GIP;
    if (s == "GMD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_GMD;
    if (s == "GRX") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_GRX;
    if (s == "HKD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_HKD;
    if (s == "HUF") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_HUF;
    if (s == "ICK") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_ICK;
    if (s == "IDR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_IDR;
    if (s == "ILS") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_ILS;
    if (s == "INR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_INR;
    if (s == "IRP") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_IRP;
    if (s == "ITL") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_ITL;
    if (s == "JMD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_JMD;
    if (s == "JOD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_JOD;
    if (s == "JPY") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_JPY;
    if (s == "KES") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_KES;
    if (s == "KRW") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_KRW;
    if (s == "KWD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_KWD;
    if (s == "KYD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_KYD;
    if (s == "LKR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_LKR;
    if (s == "LUF") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_LUF;
    if (s == "MTL") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_MTL;
    if (s == "MUR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_MUR;
    if (s == "MXN") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_MXN;
    if (s == "MYR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_MYR;
    if (s == "NLG") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_NLG;
    if (s == "NZD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_NZD;
    if (s == "OMR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_OMR;
    if (s == "PGK") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_PGK;
    if (s == "PHP") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_PHP;
    if (s == "PKR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_PKR;
    if (s == "PLN") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_PLN;
    if (s == "PTN") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_PTN;
    if (s == "QAR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_QAR;
    if (s == "RUR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_RUR;
    if (s == "SAR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_SAR;
    if (s == "SCR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_SCR;
    if (s == "SEK") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_SEK;
    if (s == "SGD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_SGD;
    if (s == "SKP") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_SKP;
    if (s == "THB") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_THB;
    if (s == "TRL") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_TRL;
    if (s == "TTD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_TTD;
    if (s == "TWD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_TWD;
    if (s == "USD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_USD;
    if (s == "VEB") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_VEB;
    if (s == "VND") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_VND;
    if (s == "XEU") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_XEU;
    if (s == "ZAR") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_ZAR;
    if (s == "ZWD") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_ZWD;
    if (s == "NOK") return ::Ifc2x3::IfcCurrencyEnum::IfcCurrency_NOK;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

const char* IfcDerivedUnitEnum::ToString(IfcDerivedUnitEnum v) {
    if ( v < 0 || v >= 49 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ANGULARVELOCITYUNIT", "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", "SOUNDPOWERUNIT", "SOUNDPRESSUREUNIT", "TEMPERATUREGRADIENTUNIT", "THERMALEXPANSIONCOEFFICIENTUNIT", "WARPINGCONSTANTUNIT", "WARPINGMOMENTUNIT", "USERDEFINED" };
    return names[v];
}

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

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

IfcDimensionExtentUsage::IfcDimensionExtentUsage IfcDimensionExtentUsage::FromString(const std::string& s) {
    if (s == "ORIGIN") return ::Ifc2x3::IfcDimensionExtentUsage::IfcDimensionExtentUsage_ORIGIN;
    if (s == "TARGET") return ::Ifc2x3::IfcDimensionExtentUsage::IfcDimensionExtentUsage_TARGET;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

const char* IfcElectricApplianceTypeEnum::ToString(IfcElectricApplianceTypeEnum v) {
    if ( v < 0 || v >= 26 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "COMPUTER", "DIRECTWATERHEATER", "DISHWASHER", "ELECTRICCOOKER", "ELECTRICHEATER", "FACSIMILE", "FREESTANDINGFAN", "FREEZER", "FRIDGE_FREEZER", "HANDDRYER", "INDIRECTWATERHEATER", "MICROWAVE", "PHOTOCOPIER", "PRINTER", "REFRIGERATOR", "RADIANTHEATER", "SCANNER", "TELEPHONE", "TUMBLEDRYER", "TV", "VENDINGMACHINE", "WASHINGMACHINE", "WATERHEATER", "WATERCOOLER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum IfcElectricApplianceTypeEnum::FromString(const std::string& s) {
    if (s == "COMPUTER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_COMPUTER;
    if (s == "DIRECTWATERHEATER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_DIRECTWATERHEATER;
    if (s == "DISHWASHER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_DISHWASHER;
    if (s == "ELECTRICCOOKER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_ELECTRICCOOKER;
    if (s == "ELECTRICHEATER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_ELECTRICHEATER;
    if (s == "FACSIMILE") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FACSIMILE;
    if (s == "FREESTANDINGFAN") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREESTANDINGFAN;
    if (s == "FREEZER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREEZER;
    if (s == "FRIDGE_FREEZER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FRIDGE_FREEZER;
    if (s == "HANDDRYER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_HANDDRYER;
    if (s == "INDIRECTWATERHEATER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_INDIRECTWATERHEATER;
    if (s == "MICROWAVE") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_MICROWAVE;
    if (s == "PHOTOCOPIER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_PHOTOCOPIER;
    if (s == "PRINTER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_PRINTER;
    if (s == "REFRIGERATOR") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_REFRIGERATOR;
    if (s == "RADIANTHEATER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_RADIANTHEATER;
    if (s == "SCANNER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_SCANNER;
    if (s == "TELEPHONE") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_TELEPHONE;
    if (s == "TUMBLEDRYER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_TUMBLEDRYER;
    if (s == "TV") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_TV;
    if (s == "VENDINGMACHINE") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_VENDINGMACHINE;
    if (s == "WASHINGMACHINE") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_WASHINGMACHINE;
    if (s == "WATERHEATER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_WATERHEATER;
    if (s == "WATERCOOLER") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_WATERCOOLER;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

IfcElectricCurrentEnum::IfcElectricCurrentEnum IfcElectricCurrentEnum::FromString(const std::string& s) {
    if (s == "ALTERNATING") return ::Ifc2x3::IfcElectricCurrentEnum::IfcElectricCurrent_ALTERNATING;
    if (s == "DIRECT") return ::Ifc2x3::IfcElectricCurrentEnum::IfcElectricCurrent_DIRECT;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcElectricCurrentEnum::IfcElectricCurrent_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunctionEnum IfcElectricDistributionPointFunctionEnum::FromString(const std::string& s) {
    if (s == "ALARMPANEL") return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunction_ALARMPANEL;
    if (s == "CONSUMERUNIT") return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunction_CONSUMERUNIT;
    if (s == "CONTROLPANEL") return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunction_CONTROLPANEL;
    if (s == "DISTRIBUTIONBOARD") return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunction_DISTRIBUTIONBOARD;
    if (s == "GASDETECTORPANEL") return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunction_GASDETECTORPANEL;
    if (s == "INDICATORPANEL") return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunction_INDICATORPANEL;
    if (s == "MIMICPANEL") return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunction_MIMICPANEL;
    if (s == "MOTORCONTROLCENTRE") return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunction_MOTORCONTROLCENTRE;
    if (s == "SWITCHBOARD") return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunction_SWITCHBOARD;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunction_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunction_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum IfcElectricGeneratorTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc2x3::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

IfcElectricHeaterTypeEnum::IfcElectricHeaterTypeEnum IfcElectricHeaterTypeEnum::FromString(const std::string& s) {
    if (s == "ELECTRICPOINTHEATER") return ::Ifc2x3::IfcElectricHeaterTypeEnum::IfcElectricHeaterType_ELECTRICPOINTHEATER;
    if (s == "ELECTRICCABLEHEATER") return ::Ifc2x3::IfcElectricHeaterTypeEnum::IfcElectricHeaterType_ELECTRICCABLEHEATER;
    if (s == "ELECTRICMATHEATER") return ::Ifc2x3::IfcElectricHeaterTypeEnum::IfcElectricHeaterType_ELECTRICMATHEATER;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcElectricHeaterTypeEnum::IfcElectricHeaterType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcElectricHeaterTypeEnum::IfcElectricHeaterType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

IfcEnergySequenceEnum::IfcEnergySequenceEnum IfcEnergySequenceEnum::FromString(const std::string& s) {
    if (s == "PRIMARY") return ::Ifc2x3::IfcEnergySequenceEnum::IfcEnergySequence_PRIMARY;
    if (s == "SECONDARY") return ::Ifc2x3::IfcEnergySequenceEnum::IfcEnergySequence_SECONDARY;
    if (s == "TERTIARY") return ::Ifc2x3::IfcEnergySequenceEnum::IfcEnergySequence_TERTIARY;
    if (s == "AUXILIARY") return ::Ifc2x3::IfcEnergySequenceEnum::IfcEnergySequence_AUXILIARY;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcEnergySequenceEnum::IfcEnergySequence_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcEnergySequenceEnum::IfcEnergySequence_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcEnvironmentalImpactCategoryEnum::ToString(IfcEnvironmentalImpactCategoryEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "COMBINEDVALUE", "DISPOSAL", "EXTRACTION", "INSTALLATION", "MANUFACTURE", "TRANSPORTATION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategoryEnum IfcEnvironmentalImpactCategoryEnum::FromString(const std::string& s) {
    if (s == "COMBINEDVALUE") return ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategory_COMBINEDVALUE;
    if (s == "DISPOSAL") return ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategory_DISPOSAL;
    if (s == "EXTRACTION") return ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategory_EXTRACTION;
    if (s == "INSTALLATION") return ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategory_INSTALLATION;
    if (s == "MANUFACTURE") return ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategory_MANUFACTURE;
    if (s == "TRANSPORTATION") return ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategory_TRANSPORTATION;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategory_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategory_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IfcGasTerminalTypeEnum::IfcGasTerminalTypeEnum IfcGasTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "GASAPPLIANCE") return ::Ifc2x3::IfcGasTerminalTypeEnum::IfcGasTerminalType_GASAPPLIANCE;
    if (s == "GASBOOSTER") return ::Ifc2x3::IfcGasTerminalTypeEnum::IfcGasTerminalType_GASBOOSTER;
    if (s == "GASBURNER") return ::Ifc2x3::IfcGasTerminalTypeEnum::IfcGasTerminalType_GASBURNER;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcGasTerminalTypeEnum::IfcGasTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcGasTerminalTypeEnum::IfcGasTerminalType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

IfcInternalOrExternalEnum::IfcInternalOrExternalEnum IfcInternalOrExternalEnum::FromString(const std::string& s) {
    if (s == "INTERNAL") return ::Ifc2x3::IfcInternalOrExternalEnum::IfcInternalOrExternal_INTERNAL;
    if (s == "EXTERNAL") return ::Ifc2x3::IfcInternalOrExternalEnum::IfcInternalOrExternal_EXTERNAL;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcInternalOrExternalEnum::IfcInternalOrExternal_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IfcLogicalOperatorEnum::IfcLogicalOperatorEnum IfcLogicalOperatorEnum::FromString(const std::string& s) {
    if (s == "LOGICALAND") return ::Ifc2x3::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALAND;
    if (s == "LOGICALOR") return ::Ifc2x3::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALOR;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

IfcObjectiveEnum::IfcObjectiveEnum IfcObjectiveEnum::FromString(const std::string& s) {
    if (s == "CODECOMPLIANCE") return ::Ifc2x3::IfcObjectiveEnum::IfcObjective_CODECOMPLIANCE;
    if (s == "DESIGNINTENT") return ::Ifc2x3::IfcObjectiveEnum::IfcObjective_DESIGNINTENT;
    if (s == "HEALTHANDSAFETY") return ::Ifc2x3::IfcObjectiveEnum::IfcObjective_HEALTHANDSAFETY;
    if (s == "REQUIREMENT") return ::Ifc2x3::IfcObjectiveEnum::IfcObjective_REQUIREMENT;
    if (s == "SPECIFICATION") return ::Ifc2x3::IfcObjectiveEnum::IfcObjective_SPECIFICATION;
    if (s == "TRIGGERCONDITION") return ::Ifc2x3::IfcObjectiveEnum::IfcObjective_TRIGGERCONDITION;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcObjectiveEnum::IfcObjective_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcObjectiveEnum::IfcObjective_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordTypeEnum IfcProjectOrderRecordTypeEnum::FromString(const std::string& s) {
    if (s == "CHANGE") return ::Ifc2x3::IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordType_CHANGE;
    if (s == "MAINTENANCE") return ::Ifc2x3::IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordType_MAINTENANCE;
    if (s == "MOVE") return ::Ifc2x3::IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordType_MOVE;
    if (s == "PURCHASE") return ::Ifc2x3::IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordType_PURCHASE;
    if (s == "WORK") return ::Ifc2x3::IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordType_WORK;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

const char* IfcPropertySourceEnum::ToString(IfcPropertySourceEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DESIGN", "DESIGNMAXIMUM", "DESIGNMINIMUM", "SIMULATED", "ASBUILT", "COMMISSIONING", "MEASURED", "USERDEFINED", "NOTKNOWN" };
    return names[v];
}

IfcPropertySourceEnum::IfcPropertySourceEnum IfcPropertySourceEnum::FromString(const std::string& s) {
    if (s == "DESIGN") return ::Ifc2x3::IfcPropertySourceEnum::IfcPropertySource_DESIGN;
    if (s == "DESIGNMAXIMUM") return ::Ifc2x3::IfcPropertySourceEnum::IfcPropertySource_DESIGNMAXIMUM;
    if (s == "DESIGNMINIMUM") return ::Ifc2x3::IfcPropertySourceEnum::IfcPropertySource_DESIGNMINIMUM;
    if (s == "SIMULATED") return ::Ifc2x3::IfcPropertySourceEnum::IfcPropertySource_SIMULATED;
    if (s == "ASBUILT") return ::Ifc2x3::IfcPropertySourceEnum::IfcPropertySource_ASBUILT;
    if (s == "COMMISSIONING") return ::Ifc2x3::IfcPropertySourceEnum::IfcPropertySource_COMMISSIONING;
    if (s == "MEASURED") return ::Ifc2x3::IfcPropertySourceEnum::IfcPropertySource_MEASURED;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcPropertySourceEnum::IfcPropertySource_USERDEFINED;
    if (s == "NOTKNOWN") return ::Ifc2x3::IfcPropertySourceEnum::IfcPropertySource_NOTKNOWN;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

const char* IfcResourceConsumptionEnum::ToString(IfcResourceConsumptionEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CONSUMED", "PARTIALLYCONSUMED", "NOTCONSUMED", "OCCUPIED", "PARTIALLYOCCUPIED", "NOTOCCUPIED", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcResourceConsumptionEnum::IfcResourceConsumptionEnum IfcResourceConsumptionEnum::FromString(const std::string& s) {
    if (s == "CONSUMED") return ::Ifc2x3::IfcResourceConsumptionEnum::IfcResourceConsumption_CONSUMED;
    if (s == "PARTIALLYCONSUMED") return ::Ifc2x3::IfcResourceConsumptionEnum::IfcResourceConsumption_PARTIALLYCONSUMED;
    if (s == "NOTCONSUMED") return ::Ifc2x3::IfcResourceConsumptionEnum::IfcResourceConsumption_NOTCONSUMED;
    if (s == "OCCUPIED") return ::Ifc2x3::IfcResourceConsumptionEnum::IfcResourceConsumption_OCCUPIED;
    if (s == "PARTIALLYOCCUPIED") return ::Ifc2x3::IfcResourceConsumptionEnum::IfcResourceConsumption_PARTIALLYOCCUPIED;
    if (s == "NOTOCCUPIED") return ::Ifc2x3::IfcResourceConsumptionEnum::IfcResourceConsumption_NOTOCCUPIED;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcResourceConsumptionEnum::IfcResourceConsumption_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcResourceConsumptionEnum::IfcResourceConsumption_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

IfcRibPlateDirectionEnum::IfcRibPlateDirectionEnum IfcRibPlateDirectionEnum::FromString(const std::string& s) {
    if (s == "DIRECTION_X") return ::Ifc2x3::IfcRibPlateDirectionEnum::IfcRibPlateDirection_DIRECTION_X;
    if (s == "DIRECTION_Y") return ::Ifc2x3::IfcRibPlateDirectionEnum::IfcRibPlateDirection_DIRECTION_Y;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

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

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

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

const char* IfcSensorTypeEnum::ToString(IfcSensorTypeEnum v) {
    if ( v < 0 || v >= 15 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CO2SENSOR", "FIRESENSOR", "FLOWSENSOR", "GASSENSOR", "HEATSENSOR", "HUMIDITYSENSOR", "LIGHTSENSOR", "MOISTURESENSOR", "MOVEMENTSENSOR", "PRESSURESENSOR", "SMOKESENSOR", "SOUNDSENSOR", "TEMPERATURESENSOR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSensorTypeEnum::IfcSensorTypeEnum IfcSensorTypeEnum::FromString(const std::string& s) {
    if (s == "CO2SENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_CO2SENSOR;
    if (s == "FIRESENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_FIRESENSOR;
    if (s == "FLOWSENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_FLOWSENSOR;
    if (s == "GASSENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_GASSENSOR;
    if (s == "HEATSENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_HEATSENSOR;
    if (s == "HUMIDITYSENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_HUMIDITYSENSOR;
    if (s == "LIGHTSENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_LIGHTSENSOR;
    if (s == "MOISTURESENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_MOISTURESENSOR;
    if (s == "MOVEMENTSENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_MOVEMENTSENSOR;
    if (s == "PRESSURESENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_PRESSURESENSOR;
    if (s == "SMOKESENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_SMOKESENSOR;
    if (s == "SOUNDSENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_SOUNDSENSOR;
    if (s == "TEMPERATURESENSOR") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_TEMPERATURESENSOR;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcSensorTypeEnum::IfcSensorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

const char* IfcServiceLifeFactorTypeEnum::ToString(IfcServiceLifeFactorTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "A_QUALITYOFCOMPONENTS", "B_DESIGNLEVEL", "C_WORKEXECUTIONLEVEL", "D_INDOORENVIRONMENT", "E_OUTDOORENVIRONMENT", "F_INUSECONDITIONS", "G_MAINTENANCELEVEL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorTypeEnum IfcServiceLifeFactorTypeEnum::FromString(const std::string& s) {
    if (s == "A_QUALITYOFCOMPONENTS") return ::Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorType_A_QUALITYOFCOMPONENTS;
    if (s == "B_DESIGNLEVEL") return ::Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorType_B_DESIGNLEVEL;
    if (s == "C_WORKEXECUTIONLEVEL") return ::Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorType_C_WORKEXECUTIONLEVEL;
    if (s == "D_INDOORENVIRONMENT") return ::Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorType_D_INDOORENVIRONMENT;
    if (s == "E_OUTDOORENVIRONMENT") return ::Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorType_E_OUTDOORENVIRONMENT;
    if (s == "F_INUSECONDITIONS") return ::Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorType_F_INUSECONDITIONS;
    if (s == "G_MAINTENANCELEVEL") return ::Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorType_G_MAINTENANCELEVEL;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcServiceLifeTypeEnum::ToString(IfcServiceLifeTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ACTUALSERVICELIFE", "EXPECTEDSERVICELIFE", "OPTIMISTICREFERENCESERVICELIFE", "PESSIMISTICREFERENCESERVICELIFE", "REFERENCESERVICELIFE" };
    return names[v];
}

IfcServiceLifeTypeEnum::IfcServiceLifeTypeEnum IfcServiceLifeTypeEnum::FromString(const std::string& s) {
    if (s == "ACTUALSERVICELIFE") return ::Ifc2x3::IfcServiceLifeTypeEnum::IfcServiceLifeType_ACTUALSERVICELIFE;
    if (s == "EXPECTEDSERVICELIFE") return ::Ifc2x3::IfcServiceLifeTypeEnum::IfcServiceLifeType_EXPECTEDSERVICELIFE;
    if (s == "OPTIMISTICREFERENCESERVICELIFE") return ::Ifc2x3::IfcServiceLifeTypeEnum::IfcServiceLifeType_OPTIMISTICREFERENCESERVICELIFE;
    if (s == "PESSIMISTICREFERENCESERVICELIFE") return ::Ifc2x3::IfcServiceLifeTypeEnum::IfcServiceLifeType_PESSIMISTICREFERENCESERVICELIFE;
    if (s == "REFERENCESERVICELIFE") return ::Ifc2x3::IfcServiceLifeTypeEnum::IfcServiceLifeType_REFERENCESERVICELIFE;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

const char* IfcSoundScaleEnum::ToString(IfcSoundScaleEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DBA", "DBB", "DBC", "NC", "NR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSoundScaleEnum::IfcSoundScaleEnum IfcSoundScaleEnum::FromString(const std::string& s) {
    if (s == "DBA") return ::Ifc2x3::IfcSoundScaleEnum::IfcSoundScale_DBA;
    if (s == "DBB") return ::Ifc2x3::IfcSoundScaleEnum::IfcSoundScale_DBB;
    if (s == "DBC") return ::Ifc2x3::IfcSoundScaleEnum::IfcSoundScale_DBC;
    if (s == "NC") return ::Ifc2x3::IfcSoundScaleEnum::IfcSoundScale_NC;
    if (s == "NR") return ::Ifc2x3::IfcSoundScaleEnum::IfcSoundScale_NR;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcSoundScaleEnum::IfcSoundScale_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcSoundScaleEnum::IfcSoundScale_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSpaceHeaterTypeEnum::ToString(IfcSpaceHeaterTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SECTIONALRADIATOR", "PANELRADIATOR", "TUBULARRADIATOR", "CONVECTOR", "BASEBOARDHEATER", "FINNEDTUBEUNIT", "UNITHEATER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum IfcSpaceHeaterTypeEnum::FromString(const std::string& s) {
    if (s == "SECTIONALRADIATOR") return ::Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_SECTIONALRADIATOR;
    if (s == "PANELRADIATOR") return ::Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_PANELRADIATOR;
    if (s == "TUBULARRADIATOR") return ::Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_TUBULARRADIATOR;
    if (s == "CONVECTOR") return ::Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_CONVECTOR;
    if (s == "BASEBOARDHEATER") return ::Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_BASEBOARDHEATER;
    if (s == "FINNEDTUBEUNIT") return ::Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_FINNEDTUBEUNIT;
    if (s == "UNITHEATER") return ::Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_UNITHEATER;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

IfcSpaceTypeEnum::IfcSpaceTypeEnum IfcSpaceTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc2x3::IfcSpaceTypeEnum::IfcSpaceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcSpaceTypeEnum::IfcSpaceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

IfcStructuralCurveTypeEnum::IfcStructuralCurveTypeEnum IfcStructuralCurveTypeEnum::FromString(const std::string& s) {
    if (s == "RIGID_JOINED_MEMBER") return ::Ifc2x3::IfcStructuralCurveTypeEnum::IfcStructuralCurveType_RIGID_JOINED_MEMBER;
    if (s == "PIN_JOINED_MEMBER") return ::Ifc2x3::IfcStructuralCurveTypeEnum::IfcStructuralCurveType_PIN_JOINED_MEMBER;
    if (s == "CABLE") return ::Ifc2x3::IfcStructuralCurveTypeEnum::IfcStructuralCurveType_CABLE;
    if (s == "TENSION_MEMBER") return ::Ifc2x3::IfcStructuralCurveTypeEnum::IfcStructuralCurveType_TENSION_MEMBER;
    if (s == "COMPRESSION_MEMBER") return ::Ifc2x3::IfcStructuralCurveTypeEnum::IfcStructuralCurveType_COMPRESSION_MEMBER;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcStructuralCurveTypeEnum::IfcStructuralCurveType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcStructuralCurveTypeEnum::IfcStructuralCurveType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceTypeEnum IfcStructuralSurfaceTypeEnum::FromString(const std::string& s) {
    if (s == "BENDING_ELEMENT") return ::Ifc2x3::IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceType_BENDING_ELEMENT;
    if (s == "MEMBRANE_ELEMENT") return ::Ifc2x3::IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceType_MEMBRANE_ELEMENT;
    if (s == "SHELL") return ::Ifc2x3::IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceType_SHELL;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

const char* IfcSurfaceTextureEnum::ToString(IfcSurfaceTextureEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BUMP", "OPACITY", "REFLECTION", "SELFILLUMINATION", "SHININESS", "SPECULAR", "TEXTURE", "TRANSPARENCYMAP", "NOTDEFINED" };
    return names[v];
}

IfcSurfaceTextureEnum::IfcSurfaceTextureEnum IfcSurfaceTextureEnum::FromString(const std::string& s) {
    if (s == "BUMP") return ::Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTexture_BUMP;
    if (s == "OPACITY") return ::Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTexture_OPACITY;
    if (s == "REFLECTION") return ::Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTexture_REFLECTION;
    if (s == "SELFILLUMINATION") return ::Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTexture_SELFILLUMINATION;
    if (s == "SHININESS") return ::Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTexture_SHININESS;
    if (s == "SPECULAR") return ::Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTexture_SPECULAR;
    if (s == "TEXTURE") return ::Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTexture_TEXTURE;
    if (s == "TRANSPARENCYMAP") return ::Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTexture_TRANSPARENCYMAP;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTexture_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum IfcSwitchingDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "CONTACTOR") return ::Ifc2x3::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_CONTACTOR;
    if (s == "EMERGENCYSTOP") return ::Ifc2x3::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_EMERGENCYSTOP;
    if (s == "STARTER") return ::Ifc2x3::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_STARTER;
    if (s == "SWITCHDISCONNECTOR") return ::Ifc2x3::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_SWITCHDISCONNECTOR;
    if (s == "TOGGLESWITCH") return ::Ifc2x3::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_TOGGLESWITCH;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

IfcTankTypeEnum::IfcTankTypeEnum IfcTankTypeEnum::FromString(const std::string& s) {
    if (s == "PREFORMED") return ::Ifc2x3::IfcTankTypeEnum::IfcTankType_PREFORMED;
    if (s == "SECTIONAL") return ::Ifc2x3::IfcTankTypeEnum::IfcTankType_SECTIONAL;
    if (s == "EXPANSION") return ::Ifc2x3::IfcTankTypeEnum::IfcTankType_EXPANSION;
    if (s == "PRESSUREVESSEL") return ::Ifc2x3::IfcTankTypeEnum::IfcTankType_PRESSUREVESSEL;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcTankTypeEnum::IfcTankType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcTankTypeEnum::IfcTankType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

const char* IfcThermalLoadSourceEnum::ToString(IfcThermalLoadSourceEnum v) {
    if ( v < 0 || v >= 13 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PEOPLE", "LIGHTING", "EQUIPMENT", "VENTILATIONINDOORAIR", "VENTILATIONOUTSIDEAIR", "RECIRCULATEDAIR", "EXHAUSTAIR", "AIREXCHANGERATE", "DRYBULBTEMPERATURE", "RELATIVEHUMIDITY", "INFILTRATION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcThermalLoadSourceEnum::IfcThermalLoadSourceEnum IfcThermalLoadSourceEnum::FromString(const std::string& s) {
    if (s == "PEOPLE") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_PEOPLE;
    if (s == "LIGHTING") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_LIGHTING;
    if (s == "EQUIPMENT") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_EQUIPMENT;
    if (s == "VENTILATIONINDOORAIR") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_VENTILATIONINDOORAIR;
    if (s == "VENTILATIONOUTSIDEAIR") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_VENTILATIONOUTSIDEAIR;
    if (s == "RECIRCULATEDAIR") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_RECIRCULATEDAIR;
    if (s == "EXHAUSTAIR") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_EXHAUSTAIR;
    if (s == "AIREXCHANGERATE") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_AIREXCHANGERATE;
    if (s == "DRYBULBTEMPERATURE") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_DRYBULBTEMPERATURE;
    if (s == "RELATIVEHUMIDITY") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_RELATIVEHUMIDITY;
    if (s == "INFILTRATION") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_INFILTRATION;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSource_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

IfcThermalLoadTypeEnum::IfcThermalLoadTypeEnum IfcThermalLoadTypeEnum::FromString(const std::string& s) {
    if (s == "SENSIBLE") return ::Ifc2x3::IfcThermalLoadTypeEnum::IfcThermalLoadType_SENSIBLE;
    if (s == "LATENT") return ::Ifc2x3::IfcThermalLoadTypeEnum::IfcThermalLoadType_LATENT;
    if (s == "RADIANT") return ::Ifc2x3::IfcThermalLoadTypeEnum::IfcThermalLoadType_RADIANT;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcThermalLoadTypeEnum::IfcThermalLoadType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleTypeEnum IfcTimeSeriesScheduleTypeEnum::FromString(const std::string& s) {
    if (s == "ANNUAL") return ::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleType_ANNUAL;
    if (s == "MONTHLY") return ::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleType_MONTHLY;
    if (s == "WEEKLY") return ::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleType_WEEKLY;
    if (s == "DAILY") return ::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleType_DAILY;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IfcWallTypeEnum::IfcWallTypeEnum IfcWallTypeEnum::FromString(const std::string& s) {
    if (s == "STANDARD") return ::Ifc2x3::IfcWallTypeEnum::IfcWallType_STANDARD;
    if (s == "POLYGONAL") return ::Ifc2x3::IfcWallTypeEnum::IfcWallType_POLYGONAL;
    if (s == "SHEAR") return ::Ifc2x3::IfcWallTypeEnum::IfcWallType_SHEAR;
    if (s == "ELEMENTEDWALL") return ::Ifc2x3::IfcWallTypeEnum::IfcWallType_ELEMENTEDWALL;
    if (s == "PLUMBINGWALL") return ::Ifc2x3::IfcWallTypeEnum::IfcWallType_PLUMBINGWALL;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcWallTypeEnum::IfcWallType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcWallTypeEnum::IfcWallType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

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

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

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

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

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

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

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

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

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

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

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

IfcWorkControlTypeEnum::IfcWorkControlTypeEnum IfcWorkControlTypeEnum::FromString(const std::string& s) {
    if (s == "ACTUAL") return ::Ifc2x3::IfcWorkControlTypeEnum::IfcWorkControlType_ACTUAL;
    if (s == "BASELINE") return ::Ifc2x3::IfcWorkControlTypeEnum::IfcWorkControlType_BASELINE;
    if (s == "PLANNED") return ::Ifc2x3::IfcWorkControlTypeEnum::IfcWorkControlType_PLANNED;
    if (s == "USERDEFINED") return ::Ifc2x3::IfcWorkControlTypeEnum::IfcWorkControlType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc2x3::IfcWorkControlTypeEnum::IfcWorkControlType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


// Function implementations for Ifc2DCompositeCurve


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

// Function implementations for IfcActionRequest
std::string IfcActionRequest::RequestID() const { return *data_->getArgument(5); }
void IfcActionRequest::setRequestID(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


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

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

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

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

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


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

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


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

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

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

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

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


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

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


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

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


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

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


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

// Function implementations for IfcAngularDimension


const IfcParse::entity& IfcAngularDimension::declaration() const { return *IfcAngularDimension_type; }
Type::Enum IfcAngularDimension::Class() { return Type::IfcAngularDimension; }
IfcAngularDimension::IfcAngularDimension(IfcAbstractEntity* e) : IfcDimensionCurveDirectedCallout((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAngularDimension)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAngularDimension::IfcAngularDimension(IfcEntityList::ptr v1_Contents) : IfcDimensionCurveDirectedCallout((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Contents)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAnnotation

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

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

// Function implementations for IfcAnnotationCurveOccurrence


const IfcParse::entity& IfcAnnotationCurveOccurrence::declaration() const { return *IfcAnnotationCurveOccurrence_type; }
Type::Enum IfcAnnotationCurveOccurrence::Class() { return Type::IfcAnnotationCurveOccurrence; }
IfcAnnotationCurveOccurrence::IfcAnnotationCurveOccurrence(IfcAbstractEntity* e) : IfcAnnotationOccurrence((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAnnotationCurveOccurrence)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAnnotationCurveOccurrence::IfcAnnotationCurveOccurrence(IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcAnnotationOccurrence((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcAnnotationFillAreaOccurrence
bool IfcAnnotationFillAreaOccurrence::hasFillStyleTarget() const { return !data_->getArgument(3)->isNull(); }
IfcPoint* IfcAnnotationFillAreaOccurrence::FillStyleTarget() const { return (IfcPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcAnnotationFillAreaOccurrence::setFillStyleTarget(IfcPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcAnnotationFillAreaOccurrence::hasGlobalOrLocal() const { return !data_->getArgument(4)->isNull(); }
IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum IfcAnnotationFillAreaOccurrence::GlobalOrLocal() const { return IfcGlobalOrLocalEnum::FromString(*data_->getArgument(4)); }
void IfcAnnotationFillAreaOccurrence::setGlobalOrLocal(IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcGlobalOrLocalEnum::ToString(v)); }


const IfcParse::entity& IfcAnnotationFillAreaOccurrence::declaration() const { return *IfcAnnotationFillAreaOccurrence_type; }
Type::Enum IfcAnnotationFillAreaOccurrence::Class() { return Type::IfcAnnotationFillAreaOccurrence; }
IfcAnnotationFillAreaOccurrence::IfcAnnotationFillAreaOccurrence(IfcAbstractEntity* e) : IfcAnnotationOccurrence((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAnnotationFillAreaOccurrence)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAnnotationFillAreaOccurrence::IfcAnnotationFillAreaOccurrence(IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name, IfcPoint* v4_FillStyleTarget, boost::optional< IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum > v5_GlobalOrLocal) : IfcAnnotationOccurrence((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } e->setArgument(3,(v4_FillStyleTarget)); if (v5_GlobalOrLocal) { e->setArgument(4,*v5_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(*v5_GlobalOrLocal)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAnnotationOccurrence


const IfcParse::entity& IfcAnnotationOccurrence::declaration() const { return *IfcAnnotationOccurrence_type; }
Type::Enum IfcAnnotationOccurrence::Class() { return Type::IfcAnnotationOccurrence; }
IfcAnnotationOccurrence::IfcAnnotationOccurrence(IfcAbstractEntity* e) : IfcStyledItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAnnotationOccurrence)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAnnotationOccurrence::IfcAnnotationOccurrence(IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcStyledItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAnnotationSurface
IfcGeometricRepresentationItem* IfcAnnotationSurface::Item() const { return (IfcGeometricRepresentationItem*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcAnnotationSurface::setItem(IfcGeometricRepresentationItem* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcAnnotationSurface::hasTextureCoordinates() const { return !data_->getArgument(1)->isNull(); }
IfcTextureCoordinate* IfcAnnotationSurface::TextureCoordinates() const { return (IfcTextureCoordinate*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcAnnotationSurface::setTextureCoordinates(IfcTextureCoordinate* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


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

// Function implementations for IfcAnnotationSurfaceOccurrence


const IfcParse::entity& IfcAnnotationSurfaceOccurrence::declaration() const { return *IfcAnnotationSurfaceOccurrence_type; }
Type::Enum IfcAnnotationSurfaceOccurrence::Class() { return Type::IfcAnnotationSurfaceOccurrence; }
IfcAnnotationSurfaceOccurrence::IfcAnnotationSurfaceOccurrence(IfcAbstractEntity* e) : IfcAnnotationOccurrence((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAnnotationSurfaceOccurrence)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAnnotationSurfaceOccurrence::IfcAnnotationSurfaceOccurrence(IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcAnnotationOccurrence((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAnnotationSymbolOccurrence


const IfcParse::entity& IfcAnnotationSymbolOccurrence::declaration() const { return *IfcAnnotationSymbolOccurrence_type; }
Type::Enum IfcAnnotationSymbolOccurrence::Class() { return Type::IfcAnnotationSymbolOccurrence; }
IfcAnnotationSymbolOccurrence::IfcAnnotationSymbolOccurrence(IfcAbstractEntity* e) : IfcAnnotationOccurrence((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAnnotationSymbolOccurrence)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAnnotationSymbolOccurrence::IfcAnnotationSymbolOccurrence(IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcAnnotationOccurrence((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAnnotationTextOccurrence


const IfcParse::entity& IfcAnnotationTextOccurrence::declaration() const { return *IfcAnnotationTextOccurrence_type; }
Type::Enum IfcAnnotationTextOccurrence::Class() { return Type::IfcAnnotationTextOccurrence; }
IfcAnnotationTextOccurrence::IfcAnnotationTextOccurrence(IfcAbstractEntity* e) : IfcAnnotationOccurrence((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAnnotationTextOccurrence)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAnnotationTextOccurrence::IfcAnnotationTextOccurrence(IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcAnnotationOccurrence((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcAppliedValue
bool IfcAppliedValue::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcAppliedValue::Name() const { return *data_->getArgument(0); }
void IfcAppliedValue::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcAppliedValue::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcAppliedValue::Description() const { return *data_->getArgument(1); }
void IfcAppliedValue::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcAppliedValue::hasAppliedValue() const { return !data_->getArgument(2)->isNull(); }
IfcAppliedValueSelect* IfcAppliedValue::AppliedValue() const { return (IfcAppliedValueSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcAppliedValue::setAppliedValue(IfcAppliedValueSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcAppliedValue::hasUnitBasis() const { return !data_->getArgument(3)->isNull(); }
IfcMeasureWithUnit* IfcAppliedValue::UnitBasis() const { return (IfcMeasureWithUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcAppliedValue::setUnitBasis(IfcMeasureWithUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcAppliedValue::hasApplicableDate() const { return !data_->getArgument(4)->isNull(); }
IfcDateTimeSelect* IfcAppliedValue::ApplicableDate() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcAppliedValue::setApplicableDate(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcAppliedValue::hasFixedUntilDate() const { return !data_->getArgument(5)->isNull(); }
IfcDateTimeSelect* IfcAppliedValue::FixedUntilDate() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcAppliedValue::setFixedUntilDate(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }

IfcReferencesValueDocument::list::ptr IfcAppliedValue::ValuesReferenced() const { return data_->getInverse(Type::IfcReferencesValueDocument, 1)->as<IfcReferencesValueDocument>(); }
IfcAppliedValueRelationship::list::ptr IfcAppliedValue::ValueOfComponents() const { return data_->getInverse(Type::IfcAppliedValueRelationship, 0)->as<IfcAppliedValueRelationship>(); }
IfcAppliedValueRelationship::list::ptr IfcAppliedValue::IsComponentIn() const { return data_->getInverse(Type::IfcAppliedValueRelationship, 1)->as<IfcAppliedValueRelationship>(); }

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

// Function implementations for IfcAppliedValueRelationship
IfcAppliedValue* IfcAppliedValueRelationship::ComponentOfTotal() const { return (IfcAppliedValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcAppliedValueRelationship::setComponentOfTotal(IfcAppliedValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcAppliedValue >::ptr IfcAppliedValueRelationship::Components() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcAppliedValue>(); }
void IfcAppliedValueRelationship::setComponents(IfcTemplatedEntityList< IfcAppliedValue >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum IfcAppliedValueRelationship::ArithmeticOperator() const { return IfcArithmeticOperatorEnum::FromString(*data_->getArgument(2)); }
void IfcAppliedValueRelationship::setArithmeticOperator(IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcArithmeticOperatorEnum::ToString(v)); }
bool IfcAppliedValueRelationship::hasName() const { return !data_->getArgument(3)->isNull(); }
std::string IfcAppliedValueRelationship::Name() const { return *data_->getArgument(3); }
void IfcAppliedValueRelationship::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcAppliedValueRelationship::hasDescription() const { return !data_->getArgument(4)->isNull(); }
std::string IfcAppliedValueRelationship::Description() const { return *data_->getArgument(4); }
void IfcAppliedValueRelationship::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcAppliedValueRelationship::declaration() const { return *IfcAppliedValueRelationship_type; }
Type::Enum IfcAppliedValueRelationship::Class() { return Type::IfcAppliedValueRelationship; }
IfcAppliedValueRelationship::IfcAppliedValueRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcAppliedValueRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAppliedValueRelationship::IfcAppliedValueRelationship(IfcAppliedValue* v1_ComponentOfTotal, IfcTemplatedEntityList< IfcAppliedValue >::ptr v2_Components, IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum v3_ArithmeticOperator, boost::optional< std::string > v4_Name, boost::optional< std::string > v5_Description) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ComponentOfTotal)); e->setArgument(1,(v2_Components)->generalize()); e->setArgument(2,v3_ArithmeticOperator,IfcArithmeticOperatorEnum::ToString(v3_ArithmeticOperator)); if (v4_Name) { e->setArgument(3,(*v4_Name)); } else { e->setArgument(3); } if (v5_Description) { e->setArgument(4,(*v5_Description)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcApproval
bool IfcApproval::hasDescription() const { return !data_->getArgument(0)->isNull(); }
std::string IfcApproval::Description() const { return *data_->getArgument(0); }
void IfcApproval::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcDateTimeSelect* IfcApproval::ApprovalDateTime() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcApproval::setApprovalDateTime(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcApproval::hasApprovalStatus() const { return !data_->getArgument(2)->isNull(); }
std::string IfcApproval::ApprovalStatus() const { return *data_->getArgument(2); }
void IfcApproval::setApprovalStatus(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcApproval::hasApprovalLevel() const { return !data_->getArgument(3)->isNull(); }
std::string IfcApproval::ApprovalLevel() const { return *data_->getArgument(3); }
void IfcApproval::setApprovalLevel(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcApproval::hasApprovalQualifier() const { return !data_->getArgument(4)->isNull(); }
std::string IfcApproval::ApprovalQualifier() const { return *data_->getArgument(4); }
void IfcApproval::setApprovalQualifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
std::string IfcApproval::Name() const { return *data_->getArgument(5); }
void IfcApproval::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
std::string IfcApproval::Identifier() const { return *data_->getArgument(6); }
void IfcApproval::setIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }

IfcApprovalActorRelationship::list::ptr IfcApproval::Actors() const { return data_->getInverse(Type::IfcApprovalActorRelationship, 1)->as<IfcApprovalActorRelationship>(); }
IfcApprovalRelationship::list::ptr IfcApproval::IsRelatedWith() const { return data_->getInverse(Type::IfcApprovalRelationship, 0)->as<IfcApprovalRelationship>(); }
IfcApprovalRelationship::list::ptr IfcApproval::Relates() const { return data_->getInverse(Type::IfcApprovalRelationship, 1)->as<IfcApprovalRelationship>(); }

const IfcParse::entity& IfcApproval::declaration() const { return *IfcApproval_type; }
Type::Enum IfcApproval::Class() { return Type::IfcApproval; }
IfcApproval::IfcApproval(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcApproval)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcApproval::IfcApproval(boost::optional< std::string > v1_Description, IfcDateTimeSelect* v2_ApprovalDateTime, boost::optional< std::string > v3_ApprovalStatus, boost::optional< std::string > v4_ApprovalLevel, boost::optional< std::string > v5_ApprovalQualifier, std::string v6_Name, std::string v7_Identifier) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Description) { e->setArgument(0,(*v1_Description)); } else { e->setArgument(0); } e->setArgument(1,(v2_ApprovalDateTime)); if (v3_ApprovalStatus) { e->setArgument(2,(*v3_ApprovalStatus)); } else { e->setArgument(2); } if (v4_ApprovalLevel) { e->setArgument(3,(*v4_ApprovalLevel)); } else { e->setArgument(3); } if (v5_ApprovalQualifier) { e->setArgument(4,(*v5_ApprovalQualifier)); } else { e->setArgument(4); } e->setArgument(5,(v6_Name)); e->setArgument(6,(v7_Identifier)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcApprovalActorRelationship
IfcActorSelect* IfcApprovalActorRelationship::Actor() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcApprovalActorRelationship::setActor(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcApproval* IfcApprovalActorRelationship::Approval() const { return (IfcApproval*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcApprovalActorRelationship::setApproval(IfcApproval* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcActorRole* IfcApprovalActorRelationship::Role() const { return (IfcActorRole*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcApprovalActorRelationship::setRole(IfcActorRole* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcApprovalActorRelationship::declaration() const { return *IfcApprovalActorRelationship_type; }
Type::Enum IfcApprovalActorRelationship::Class() { return Type::IfcApprovalActorRelationship; }
IfcApprovalActorRelationship::IfcApprovalActorRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcApprovalActorRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcApprovalActorRelationship::IfcApprovalActorRelationship(IfcActorSelect* v1_Actor, IfcApproval* v2_Approval, IfcActorRole* v3_Role) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Actor)); e->setArgument(1,(v2_Approval)); e->setArgument(2,(v3_Role)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcApprovalPropertyRelationship
IfcTemplatedEntityList< IfcProperty >::ptr IfcApprovalPropertyRelationship::ApprovedProperties() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcProperty>(); }
void IfcApprovalPropertyRelationship::setApprovedProperties(IfcTemplatedEntityList< IfcProperty >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
IfcApproval* IfcApprovalPropertyRelationship::Approval() const { return (IfcApproval*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcApprovalPropertyRelationship::setApproval(IfcApproval* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcApprovalPropertyRelationship::declaration() const { return *IfcApprovalPropertyRelationship_type; }
Type::Enum IfcApprovalPropertyRelationship::Class() { return Type::IfcApprovalPropertyRelationship; }
IfcApprovalPropertyRelationship::IfcApprovalPropertyRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcApprovalPropertyRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcApprovalPropertyRelationship::IfcApprovalPropertyRelationship(IfcTemplatedEntityList< IfcProperty >::ptr v1_ApprovedProperties, IfcApproval* v2_Approval) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ApprovedProperties)->generalize()); e->setArgument(1,(v2_Approval)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcApprovalRelationship
IfcApproval* IfcApprovalRelationship::RelatedApproval() const { return (IfcApproval*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcApprovalRelationship::setRelatedApproval(IfcApproval* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcApproval* IfcApprovalRelationship::RelatingApproval() const { return (IfcApproval*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcApprovalRelationship::setRelatingApproval(IfcApproval* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcApprovalRelationship::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcApprovalRelationship::Description() const { return *data_->getArgument(2); }
void IfcApprovalRelationship::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
std::string IfcApprovalRelationship::Name() const { return *data_->getArgument(3); }
void IfcApprovalRelationship::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


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

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


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

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


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

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


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

// Function implementations for IfcAsset
std::string IfcAsset::AssetID() const { return *data_->getArgument(5); }
void IfcAsset::setAssetID(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcCostValue* IfcAsset::OriginalValue() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcAsset::setOriginalValue(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcCostValue* IfcAsset::CurrentValue() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcAsset::setCurrentValue(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcCostValue* IfcAsset::TotalReplacementCost() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcAsset::setTotalReplacementCost(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
IfcActorSelect* IfcAsset::Owner() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcAsset::setOwner(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
IfcActorSelect* IfcAsset::User() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcAsset::setUser(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
IfcPerson* IfcAsset::ResponsiblePerson() const { return (IfcPerson*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(11))); }
void IfcAsset::setResponsiblePerson(IfcPerson* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
IfcCalendarDate* IfcAsset::IncorporationDate() const { return (IfcCalendarDate*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(12))); }
void IfcAsset::setIncorporationDate(IfcCalendarDate* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
IfcCostValue* IfcAsset::DepreciatedValue() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(13))); }
void IfcAsset::setDepreciatedValue(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }


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

// Function implementations for IfcAsymmetricIShapeProfileDef
double IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const { return *data_->getArgument(8); }
void IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcAsymmetricIShapeProfileDef::hasTopFlangeThickness() const { return !data_->getArgument(9)->isNull(); }
double IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { return *data_->getArgument(9); }
void IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcAsymmetricIShapeProfileDef::hasTopFlangeFilletRadius() const { return !data_->getArgument(10)->isNull(); }
double IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { return *data_->getArgument(10); }
void IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcAsymmetricIShapeProfileDef::hasCentreOfGravityInY() const { return !data_->getArgument(11)->isNull(); }
double IfcAsymmetricIShapeProfileDef::CentreOfGravityInY() const { return *data_->getArgument(11); }
void IfcAsymmetricIShapeProfileDef::setCentreOfGravityInY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


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

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


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

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


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

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


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

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


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

// Function implementations for IfcBeam


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

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


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

// Function implementations for IfcBezierCurve


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

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


const IfcParse::entity& IfcBlobTexture::declaration() const { return *IfcBlobTexture_type; }
Type::Enum IfcBlobTexture::Class() { return Type::IfcBlobTexture; }
IfcBlobTexture::IfcBlobTexture(IfcAbstractEntity* e) : IfcSurfaceTexture((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBlobTexture)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBlobTexture::IfcBlobTexture(bool v1_RepeatS, bool v2_RepeatT, IfcSurfaceTextureEnum::IfcSurfaceTextureEnum v3_TextureType, IfcCartesianTransformationOperator2D* v4_TextureTransform, std::string v5_RasterFormat, bool v6_RasterCode) : IfcSurfaceTexture((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RepeatS)); e->setArgument(1,(v2_RepeatT)); e->setArgument(2,v3_TextureType,IfcSurfaceTextureEnum::ToString(v3_TextureType)); e->setArgument(3,(v4_TextureTransform)); e->setArgument(4,(v5_RasterFormat)); e->setArgument(5,(v6_RasterCode)); data_ = e; EntityBuffer::Add(this); }

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


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

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


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

// Function implementations for IfcBooleanClippingResult


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

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


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

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


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

// Function implementations for IfcBoundaryEdgeCondition
bool IfcBoundaryEdgeCondition::hasLinearStiffnessByLengthX() const { return !data_->getArgument(1)->isNull(); }
double IfcBoundaryEdgeCondition::LinearStiffnessByLengthX() const { return *data_->getArgument(1); }
void IfcBoundaryEdgeCondition::setLinearStiffnessByLengthX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcBoundaryEdgeCondition::hasLinearStiffnessByLengthY() const { return !data_->getArgument(2)->isNull(); }
double IfcBoundaryEdgeCondition::LinearStiffnessByLengthY() const { return *data_->getArgument(2); }
void IfcBoundaryEdgeCondition::setLinearStiffnessByLengthY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcBoundaryEdgeCondition::hasLinearStiffnessByLengthZ() const { return !data_->getArgument(3)->isNull(); }
double IfcBoundaryEdgeCondition::LinearStiffnessByLengthZ() const { return *data_->getArgument(3); }
void IfcBoundaryEdgeCondition::setLinearStiffnessByLengthZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcBoundaryEdgeCondition::hasRotationalStiffnessByLengthX() const { return !data_->getArgument(4)->isNull(); }
double IfcBoundaryEdgeCondition::RotationalStiffnessByLengthX() const { return *data_->getArgument(4); }
void IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcBoundaryEdgeCondition::hasRotationalStiffnessByLengthY() const { return !data_->getArgument(5)->isNull(); }
double IfcBoundaryEdgeCondition::RotationalStiffnessByLengthY() const { return *data_->getArgument(5); }
void IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcBoundaryEdgeCondition::hasRotationalStiffnessByLengthZ() const { return !data_->getArgument(6)->isNull(); }
double IfcBoundaryEdgeCondition::RotationalStiffnessByLengthZ() const { return *data_->getArgument(6); }
void IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


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

// Function implementations for IfcBoundaryFaceCondition
bool IfcBoundaryFaceCondition::hasLinearStiffnessByAreaX() const { return !data_->getArgument(1)->isNull(); }
double IfcBoundaryFaceCondition::LinearStiffnessByAreaX() const { return *data_->getArgument(1); }
void IfcBoundaryFaceCondition::setLinearStiffnessByAreaX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcBoundaryFaceCondition::hasLinearStiffnessByAreaY() const { return !data_->getArgument(2)->isNull(); }
double IfcBoundaryFaceCondition::LinearStiffnessByAreaY() const { return *data_->getArgument(2); }
void IfcBoundaryFaceCondition::setLinearStiffnessByAreaY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcBoundaryFaceCondition::hasLinearStiffnessByAreaZ() const { return !data_->getArgument(3)->isNull(); }
double IfcBoundaryFaceCondition::LinearStiffnessByAreaZ() const { return *data_->getArgument(3); }
void IfcBoundaryFaceCondition::setLinearStiffnessByAreaZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


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

// Function implementations for IfcBoundaryNodeCondition
bool IfcBoundaryNodeCondition::hasLinearStiffnessX() const { return !data_->getArgument(1)->isNull(); }
double IfcBoundaryNodeCondition::LinearStiffnessX() const { return *data_->getArgument(1); }
void IfcBoundaryNodeCondition::setLinearStiffnessX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcBoundaryNodeCondition::hasLinearStiffnessY() const { return !data_->getArgument(2)->isNull(); }
double IfcBoundaryNodeCondition::LinearStiffnessY() const { return *data_->getArgument(2); }
void IfcBoundaryNodeCondition::setLinearStiffnessY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcBoundaryNodeCondition::hasLinearStiffnessZ() const { return !data_->getArgument(3)->isNull(); }
double IfcBoundaryNodeCondition::LinearStiffnessZ() const { return *data_->getArgument(3); }
void IfcBoundaryNodeCondition::setLinearStiffnessZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcBoundaryNodeCondition::hasRotationalStiffnessX() const { return !data_->getArgument(4)->isNull(); }
double IfcBoundaryNodeCondition::RotationalStiffnessX() const { return *data_->getArgument(4); }
void IfcBoundaryNodeCondition::setRotationalStiffnessX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcBoundaryNodeCondition::hasRotationalStiffnessY() const { return !data_->getArgument(5)->isNull(); }
double IfcBoundaryNodeCondition::RotationalStiffnessY() const { return *data_->getArgument(5); }
void IfcBoundaryNodeCondition::setRotationalStiffnessY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcBoundaryNodeCondition::hasRotationalStiffnessZ() const { return !data_->getArgument(6)->isNull(); }
double IfcBoundaryNodeCondition::RotationalStiffnessZ() const { return *data_->getArgument(6); }
void IfcBoundaryNodeCondition::setRotationalStiffnessZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


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

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


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

// Function implementations for IfcBoundedCurve


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

// Function implementations for IfcBoundedSurface


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

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


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

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


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

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


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

// Function implementations for IfcBuildingElement


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

// Function implementations for IfcBuildingElementComponent


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

// Function implementations for IfcBuildingElementPart


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

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


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

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


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

// Function implementations for IfcBuildingElementType


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

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


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

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


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

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


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

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


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

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


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

// Function implementations for IfcCalendarDate
int IfcCalendarDate::DayComponent() const { return *data_->getArgument(0); }
void IfcCalendarDate::setDayComponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
int IfcCalendarDate::MonthComponent() const { return *data_->getArgument(1); }
void IfcCalendarDate::setMonthComponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
int IfcCalendarDate::YearComponent() const { return *data_->getArgument(2); }
void IfcCalendarDate::setYearComponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcCalendarDate::declaration() const { return *IfcCalendarDate_type; }
Type::Enum IfcCalendarDate::Class() { return Type::IfcCalendarDate; }
IfcCalendarDate::IfcCalendarDate(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcCalendarDate)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCalendarDate::IfcCalendarDate(int v1_DayComponent, int v2_MonthComponent, int v3_YearComponent) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_DayComponent)); e->setArgument(1,(v2_MonthComponent)); e->setArgument(2,(v3_YearComponent)); data_ = e; EntityBuffer::Add(this); }

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


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

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


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

// Function implementations for IfcCartesianTransformationOperator2D


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

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


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

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


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

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


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

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


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

// Function implementations for IfcChamferEdgeFeature
bool IfcChamferEdgeFeature::hasWidth() const { return !data_->getArgument(9)->isNull(); }
double IfcChamferEdgeFeature::Width() const { return *data_->getArgument(9); }
void IfcChamferEdgeFeature::setWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcChamferEdgeFeature::hasHeight() const { return !data_->getArgument(10)->isNull(); }
double IfcChamferEdgeFeature::Height() const { return *data_->getArgument(10); }
void IfcChamferEdgeFeature::setHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


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

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


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

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


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

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


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

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


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

// Function implementations for IfcClassification
std::string IfcClassification::Source() const { return *data_->getArgument(0); }
void IfcClassification::setSource(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
std::string IfcClassification::Edition() const { return *data_->getArgument(1); }
void IfcClassification::setEdition(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcClassification::hasEditionDate() const { return !data_->getArgument(2)->isNull(); }
IfcCalendarDate* IfcClassification::EditionDate() const { return (IfcCalendarDate*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcClassification::setEditionDate(IfcCalendarDate* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
std::string IfcClassification::Name() const { return *data_->getArgument(3); }
void IfcClassification::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }

IfcClassificationItem::list::ptr IfcClassification::Contains() const { return data_->getInverse(Type::IfcClassificationItem, 1)->as<IfcClassificationItem>(); }

const IfcParse::entity& IfcClassification::declaration() const { return *IfcClassification_type; }
Type::Enum IfcClassification::Class() { return Type::IfcClassification; }
IfcClassification::IfcClassification(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcClassification)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcClassification::IfcClassification(std::string v1_Source, std::string v2_Edition, IfcCalendarDate* v3_EditionDate, std::string v4_Name) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Source)); e->setArgument(1,(v2_Edition)); e->setArgument(2,(v3_EditionDate)); e->setArgument(3,(v4_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcClassificationItem
IfcClassificationNotationFacet* IfcClassificationItem::Notation() const { return (IfcClassificationNotationFacet*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcClassificationItem::setNotation(IfcClassificationNotationFacet* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcClassificationItem::hasItemOf() const { return !data_->getArgument(1)->isNull(); }
IfcClassification* IfcClassificationItem::ItemOf() const { return (IfcClassification*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcClassificationItem::setItemOf(IfcClassification* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
std::string IfcClassificationItem::Title() const { return *data_->getArgument(2); }
void IfcClassificationItem::setTitle(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }

IfcClassificationItemRelationship::list::ptr IfcClassificationItem::IsClassifiedItemIn() const { return data_->getInverse(Type::IfcClassificationItemRelationship, 1)->as<IfcClassificationItemRelationship>(); }
IfcClassificationItemRelationship::list::ptr IfcClassificationItem::IsClassifyingItemIn() const { return data_->getInverse(Type::IfcClassificationItemRelationship, 0)->as<IfcClassificationItemRelationship>(); }

const IfcParse::entity& IfcClassificationItem::declaration() const { return *IfcClassificationItem_type; }
Type::Enum IfcClassificationItem::Class() { return Type::IfcClassificationItem; }
IfcClassificationItem::IfcClassificationItem(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcClassificationItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcClassificationItem::IfcClassificationItem(IfcClassificationNotationFacet* v1_Notation, IfcClassification* v2_ItemOf, std::string v3_Title) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Notation)); e->setArgument(1,(v2_ItemOf)); e->setArgument(2,(v3_Title)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcClassificationItemRelationship
IfcClassificationItem* IfcClassificationItemRelationship::RelatingItem() const { return (IfcClassificationItem*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcClassificationItemRelationship::setRelatingItem(IfcClassificationItem* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcClassificationItem >::ptr IfcClassificationItemRelationship::RelatedItems() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcClassificationItem>(); }
void IfcClassificationItemRelationship::setRelatedItems(IfcTemplatedEntityList< IfcClassificationItem >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }


const IfcParse::entity& IfcClassificationItemRelationship::declaration() const { return *IfcClassificationItemRelationship_type; }
Type::Enum IfcClassificationItemRelationship::Class() { return Type::IfcClassificationItemRelationship; }
IfcClassificationItemRelationship::IfcClassificationItemRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcClassificationItemRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcClassificationItemRelationship::IfcClassificationItemRelationship(IfcClassificationItem* v1_RelatingItem, IfcTemplatedEntityList< IfcClassificationItem >::ptr v2_RelatedItems) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RelatingItem)); e->setArgument(1,(v2_RelatedItems)->generalize()); data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcClassificationNotationFacet
std::string IfcClassificationNotationFacet::NotationValue() const { return *data_->getArgument(0); }
void IfcClassificationNotationFacet::setNotationValue(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


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

// Function implementations for IfcClassificationReference
bool IfcClassificationReference::hasReferencedSource() const { return !data_->getArgument(3)->isNull(); }
IfcClassification* IfcClassificationReference::ReferencedSource() const { return (IfcClassification*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcClassificationReference::setReferencedSource(IfcClassification* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


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

// Function implementations for IfcClosedShell


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

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


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

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


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

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


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

// Function implementations for IfcColumn


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

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


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

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


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

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


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

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

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

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

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


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

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


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

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


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

// Function implementations for IfcCondition


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

// Function implementations for IfcConditionCriterion
IfcConditionCriterionSelect* IfcConditionCriterion::Criterion() const { return (IfcConditionCriterionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcConditionCriterion::setCriterion(IfcConditionCriterionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcDateTimeSelect* IfcConditionCriterion::CriterionDateTime() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcConditionCriterion::setCriterionDateTime(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


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

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


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

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


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

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


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

// Function implementations for IfcConnectionGeometry


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

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


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

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


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

// Function implementations for IfcConnectionPortGeometry
IfcAxis2Placement* IfcConnectionPortGeometry::LocationAtRelatingElement() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcConnectionPortGeometry::setLocationAtRelatingElement(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcConnectionPortGeometry::hasLocationAtRelatedElement() const { return !data_->getArgument(1)->isNull(); }
IfcAxis2Placement* IfcConnectionPortGeometry::LocationAtRelatedElement() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcConnectionPortGeometry::setLocationAtRelatedElement(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcProfileDef* IfcConnectionPortGeometry::ProfileOfPort() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcConnectionPortGeometry::setProfileOfPort(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcConnectionPortGeometry::declaration() const { return *IfcConnectionPortGeometry_type; }
Type::Enum IfcConnectionPortGeometry::Class() { return Type::IfcConnectionPortGeometry; }
IfcConnectionPortGeometry::IfcConnectionPortGeometry(IfcAbstractEntity* e) : IfcConnectionGeometry((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConnectionPortGeometry)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConnectionPortGeometry::IfcConnectionPortGeometry(IfcAxis2Placement* v1_LocationAtRelatingElement, IfcAxis2Placement* v2_LocationAtRelatedElement, IfcProfileDef* v3_ProfileOfPort) : IfcConnectionGeometry((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_LocationAtRelatingElement)); e->setArgument(1,(v2_LocationAtRelatedElement)); e->setArgument(2,(v3_ProfileOfPort)); data_ = e; EntityBuffer::Add(this); }

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


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

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

IfcConstraintClassificationRelationship::list::ptr IfcConstraint::ClassifiedAs() const { return data_->getInverse(Type::IfcConstraintClassificationRelationship, 0)->as<IfcConstraintClassificationRelationship>(); }
IfcConstraintRelationship::list::ptr IfcConstraint::RelatesConstraints() const { return data_->getInverse(Type::IfcConstraintRelationship, 2)->as<IfcConstraintRelationship>(); }
IfcConstraintRelationship::list::ptr IfcConstraint::IsRelatedWith() const { return data_->getInverse(Type::IfcConstraintRelationship, 3)->as<IfcConstraintRelationship>(); }
IfcPropertyConstraintRelationship::list::ptr IfcConstraint::PropertiesForConstraint() const { return data_->getInverse(Type::IfcPropertyConstraintRelationship, 0)->as<IfcPropertyConstraintRelationship>(); }
IfcConstraintAggregationRelationship::list::ptr IfcConstraint::Aggregates() const { return data_->getInverse(Type::IfcConstraintAggregationRelationship, 2)->as<IfcConstraintAggregationRelationship>(); }
IfcConstraintAggregationRelationship::list::ptr IfcConstraint::IsAggregatedIn() const { return data_->getInverse(Type::IfcConstraintAggregationRelationship, 3)->as<IfcConstraintAggregationRelationship>(); }

const IfcParse::entity& IfcConstraint::declaration() const { return *IfcConstraint_type; }
Type::Enum IfcConstraint::Class() { return Type::IfcConstraint; }
IfcConstraint::IfcConstraint(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcConstraint)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< std::string > v2_Description, IfcConstraintEnum::IfcConstraintEnum v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, IfcActorSelect* v5_CreatingActor, IfcDateTimeSelect* v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,v3_ConstraintGrade,IfcConstraintEnum::ToString(v3_ConstraintGrade)); if (v4_ConstraintSource) { e->setArgument(3,(*v4_ConstraintSource)); } else { e->setArgument(3); } e->setArgument(4,(v5_CreatingActor)); e->setArgument(5,(v6_CreationTime)); if (v7_UserDefinedGrade) { e->setArgument(6,(*v7_UserDefinedGrade)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstraintAggregationRelationship
bool IfcConstraintAggregationRelationship::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcConstraintAggregationRelationship::Name() const { return *data_->getArgument(0); }
void IfcConstraintAggregationRelationship::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcConstraintAggregationRelationship::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcConstraintAggregationRelationship::Description() const { return *data_->getArgument(1); }
void IfcConstraintAggregationRelationship::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcConstraint* IfcConstraintAggregationRelationship::RelatingConstraint() const { return (IfcConstraint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcConstraintAggregationRelationship::setRelatingConstraint(IfcConstraint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTemplatedEntityList< IfcConstraint >::ptr IfcConstraintAggregationRelationship::RelatedConstraints() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcConstraint>(); }
void IfcConstraintAggregationRelationship::setRelatedConstraints(IfcTemplatedEntityList< IfcConstraint >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }
IfcLogicalOperatorEnum::IfcLogicalOperatorEnum IfcConstraintAggregationRelationship::LogicalAggregator() const { return IfcLogicalOperatorEnum::FromString(*data_->getArgument(4)); }
void IfcConstraintAggregationRelationship::setLogicalAggregator(IfcLogicalOperatorEnum::IfcLogicalOperatorEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcLogicalOperatorEnum::ToString(v)); }


const IfcParse::entity& IfcConstraintAggregationRelationship::declaration() const { return *IfcConstraintAggregationRelationship_type; }
Type::Enum IfcConstraintAggregationRelationship::Class() { return Type::IfcConstraintAggregationRelationship; }
IfcConstraintAggregationRelationship::IfcConstraintAggregationRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcConstraintAggregationRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstraintAggregationRelationship::IfcConstraintAggregationRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcConstraint* v3_RelatingConstraint, IfcTemplatedEntityList< IfcConstraint >::ptr v4_RelatedConstraints, IfcLogicalOperatorEnum::IfcLogicalOperatorEnum v5_LogicalAggregator) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_RelatingConstraint)); e->setArgument(3,(v4_RelatedConstraints)->generalize()); e->setArgument(4,v5_LogicalAggregator,IfcLogicalOperatorEnum::ToString(v5_LogicalAggregator)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstraintClassificationRelationship
IfcConstraint* IfcConstraintClassificationRelationship::ClassifiedConstraint() const { return (IfcConstraint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcConstraintClassificationRelationship::setClassifiedConstraint(IfcConstraint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcEntityList::ptr IfcConstraintClassificationRelationship::RelatedClassifications() const { return *data_->getArgument(1); }
void IfcConstraintClassificationRelationship::setRelatedClassifications(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcConstraintClassificationRelationship::declaration() const { return *IfcConstraintClassificationRelationship_type; }
Type::Enum IfcConstraintClassificationRelationship::Class() { return Type::IfcConstraintClassificationRelationship; }
IfcConstraintClassificationRelationship::IfcConstraintClassificationRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcConstraintClassificationRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstraintClassificationRelationship::IfcConstraintClassificationRelationship(IfcConstraint* v1_ClassifiedConstraint, IfcEntityList::ptr v2_RelatedClassifications) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ClassifiedConstraint)); e->setArgument(1,(v2_RelatedClassifications)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstraintRelationship
bool IfcConstraintRelationship::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcConstraintRelationship::Name() const { return *data_->getArgument(0); }
void IfcConstraintRelationship::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcConstraintRelationship::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcConstraintRelationship::Description() const { return *data_->getArgument(1); }
void IfcConstraintRelationship::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcConstraint* IfcConstraintRelationship::RelatingConstraint() const { return (IfcConstraint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcConstraintRelationship::setRelatingConstraint(IfcConstraint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTemplatedEntityList< IfcConstraint >::ptr IfcConstraintRelationship::RelatedConstraints() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcConstraint>(); }
void IfcConstraintRelationship::setRelatedConstraints(IfcTemplatedEntityList< IfcConstraint >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }


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

// Function implementations for IfcConstructionEquipmentResource


const IfcParse::entity& IfcConstructionEquipmentResource::declaration() const { return *IfcConstructionEquipmentResource_type; }
Type::Enum IfcConstructionEquipmentResource::Class() { return Type::IfcConstructionEquipmentResource; }
IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionEquipmentResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_ResourceIdentifier, boost::optional< std::string > v7_ResourceGroup, boost::optional< IfcResourceConsumptionEnum::IfcResourceConsumptionEnum > v8_ResourceConsumption, IfcMeasureWithUnit* v9_BaseQuantity) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_ResourceIdentifier) { e->setArgument(5,(*v6_ResourceIdentifier)); } else { e->setArgument(5); } if (v7_ResourceGroup) { e->setArgument(6,(*v7_ResourceGroup)); } else { e->setArgument(6); } if (v8_ResourceConsumption) { e->setArgument(7,*v8_ResourceConsumption,IfcResourceConsumptionEnum::ToString(*v8_ResourceConsumption)); } else { e->setArgument(7); } e->setArgument(8,(v9_BaseQuantity)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstructionMaterialResource
bool IfcConstructionMaterialResource::hasSuppliers() const { return !data_->getArgument(9)->isNull(); }
IfcEntityList::ptr IfcConstructionMaterialResource::Suppliers() const { return *data_->getArgument(9); }
void IfcConstructionMaterialResource::setSuppliers(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcConstructionMaterialResource::hasUsageRatio() const { return !data_->getArgument(10)->isNull(); }
double IfcConstructionMaterialResource::UsageRatio() const { return *data_->getArgument(10); }
void IfcConstructionMaterialResource::setUsageRatio(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcConstructionMaterialResource::declaration() const { return *IfcConstructionMaterialResource_type; }
Type::Enum IfcConstructionMaterialResource::Class() { return Type::IfcConstructionMaterialResource; }
IfcConstructionMaterialResource::IfcConstructionMaterialResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionMaterialResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionMaterialResource::IfcConstructionMaterialResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_ResourceIdentifier, boost::optional< std::string > v7_ResourceGroup, boost::optional< IfcResourceConsumptionEnum::IfcResourceConsumptionEnum > v8_ResourceConsumption, IfcMeasureWithUnit* v9_BaseQuantity, boost::optional< IfcEntityList::ptr > v10_Suppliers, boost::optional< double > v11_UsageRatio) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_ResourceIdentifier) { e->setArgument(5,(*v6_ResourceIdentifier)); } else { e->setArgument(5); } if (v7_ResourceGroup) { e->setArgument(6,(*v7_ResourceGroup)); } else { e->setArgument(6); } if (v8_ResourceConsumption) { e->setArgument(7,*v8_ResourceConsumption,IfcResourceConsumptionEnum::ToString(*v8_ResourceConsumption)); } else { e->setArgument(7); } e->setArgument(8,(v9_BaseQuantity)); if (v10_Suppliers) { e->setArgument(9,(*v10_Suppliers)); } else { e->setArgument(9); } if (v11_UsageRatio) { e->setArgument(10,(*v11_UsageRatio)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstructionProductResource


const IfcParse::entity& IfcConstructionProductResource::declaration() const { return *IfcConstructionProductResource_type; }
Type::Enum IfcConstructionProductResource::Class() { return Type::IfcConstructionProductResource; }
IfcConstructionProductResource::IfcConstructionProductResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionProductResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionProductResource::IfcConstructionProductResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_ResourceIdentifier, boost::optional< std::string > v7_ResourceGroup, boost::optional< IfcResourceConsumptionEnum::IfcResourceConsumptionEnum > v8_ResourceConsumption, IfcMeasureWithUnit* v9_BaseQuantity) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_ResourceIdentifier) { e->setArgument(5,(*v6_ResourceIdentifier)); } else { e->setArgument(5); } if (v7_ResourceGroup) { e->setArgument(6,(*v7_ResourceGroup)); } else { e->setArgument(6); } if (v8_ResourceConsumption) { e->setArgument(7,*v8_ResourceConsumption,IfcResourceConsumptionEnum::ToString(*v8_ResourceConsumption)); } else { e->setArgument(7); } e->setArgument(8,(v9_BaseQuantity)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstructionResource
bool IfcConstructionResource::hasResourceIdentifier() const { return !data_->getArgument(5)->isNull(); }
std::string IfcConstructionResource::ResourceIdentifier() const { return *data_->getArgument(5); }
void IfcConstructionResource::setResourceIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcConstructionResource::hasResourceGroup() const { return !data_->getArgument(6)->isNull(); }
std::string IfcConstructionResource::ResourceGroup() const { return *data_->getArgument(6); }
void IfcConstructionResource::setResourceGroup(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcConstructionResource::hasResourceConsumption() const { return !data_->getArgument(7)->isNull(); }
IfcResourceConsumptionEnum::IfcResourceConsumptionEnum IfcConstructionResource::ResourceConsumption() const { return IfcResourceConsumptionEnum::FromString(*data_->getArgument(7)); }
void IfcConstructionResource::setResourceConsumption(IfcResourceConsumptionEnum::IfcResourceConsumptionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcResourceConsumptionEnum::ToString(v)); }
bool IfcConstructionResource::hasBaseQuantity() const { return !data_->getArgument(8)->isNull(); }
IfcMeasureWithUnit* IfcConstructionResource::BaseQuantity() const { return (IfcMeasureWithUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcConstructionResource::setBaseQuantity(IfcMeasureWithUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcConstructionResource::declaration() const { return *IfcConstructionResource_type; }
Type::Enum IfcConstructionResource::Class() { return Type::IfcConstructionResource; }
IfcConstructionResource::IfcConstructionResource(IfcAbstractEntity* e) : IfcResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionResource::IfcConstructionResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_ResourceIdentifier, boost::optional< std::string > v7_ResourceGroup, boost::optional< IfcResourceConsumptionEnum::IfcResourceConsumptionEnum > v8_ResourceConsumption, IfcMeasureWithUnit* v9_BaseQuantity) : IfcResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_ResourceIdentifier) { e->setArgument(5,(*v6_ResourceIdentifier)); } else { e->setArgument(5); } if (v7_ResourceGroup) { e->setArgument(6,(*v7_ResourceGroup)); } else { e->setArgument(6); } if (v8_ResourceConsumption) { e->setArgument(7,*v8_ResourceConsumption,IfcResourceConsumptionEnum::ToString(*v8_ResourceConsumption)); } else { e->setArgument(7); } e->setArgument(8,(v9_BaseQuantity)); data_ = e; EntityBuffer::Add(this); }

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


const IfcParse::entity& IfcContextDependentUnit::declaration() const { return *IfcContextDependentUnit_type; }
Type::Enum IfcContextDependentUnit::Class() { return Type::IfcContextDependentUnit; }
IfcContextDependentUnit::IfcContextDependentUnit(IfcAbstractEntity* e) : IfcNamedUnit((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcContextDependentUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcContextDependentUnit::IfcContextDependentUnit(IfcDimensionalExponents* v1_Dimensions, IfcUnitEnum::IfcUnitEnum v2_UnitType, std::string v3_Name) : IfcNamedUnit((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Dimensions)); e->setArgument(1,v2_UnitType,IfcUnitEnum::ToString(v2_UnitType)); e->setArgument(2,(v3_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcControl

IfcRelAssignsToControl::list::ptr IfcControl::Controls() const { return data_->getInverse(Type::IfcRelAssignsToControl, 6)->as<IfcRelAssignsToControl>(); }

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

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


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

// Function implementations for IfcConversionBasedUnit
std::string IfcConversionBasedUnit::Name() const { return *data_->getArgument(2); }
void IfcConversionBasedUnit::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcMeasureWithUnit* IfcConversionBasedUnit::ConversionFactor() const { return (IfcMeasureWithUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcConversionBasedUnit::setConversionFactor(IfcMeasureWithUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcConversionBasedUnit::declaration() const { return *IfcConversionBasedUnit_type; }
Type::Enum IfcConversionBasedUnit::Class() { return Type::IfcConversionBasedUnit; }
IfcConversionBasedUnit::IfcConversionBasedUnit(IfcAbstractEntity* e) : IfcNamedUnit((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConversionBasedUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConversionBasedUnit::IfcConversionBasedUnit(IfcDimensionalExponents* v1_Dimensions, IfcUnitEnum::IfcUnitEnum v2_UnitType, std::string v3_Name, IfcMeasureWithUnit* v4_ConversionFactor) : IfcNamedUnit((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Dimensions)); e->setArgument(1,v2_UnitType,IfcUnitEnum::ToString(v2_UnitType)); e->setArgument(2,(v3_Name)); e->setArgument(3,(v4_ConversionFactor)); data_ = e; EntityBuffer::Add(this); }

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


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

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


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

// Function implementations for IfcCoordinatedUniversalTimeOffset
int IfcCoordinatedUniversalTimeOffset::HourOffset() const { return *data_->getArgument(0); }
void IfcCoordinatedUniversalTimeOffset::setHourOffset(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcCoordinatedUniversalTimeOffset::hasMinuteOffset() const { return !data_->getArgument(1)->isNull(); }
int IfcCoordinatedUniversalTimeOffset::MinuteOffset() const { return *data_->getArgument(1); }
void IfcCoordinatedUniversalTimeOffset::setMinuteOffset(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcAheadOrBehind::IfcAheadOrBehind IfcCoordinatedUniversalTimeOffset::Sense() const { return IfcAheadOrBehind::FromString(*data_->getArgument(2)); }
void IfcCoordinatedUniversalTimeOffset::setSense(IfcAheadOrBehind::IfcAheadOrBehind v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcAheadOrBehind::ToString(v)); }


const IfcParse::entity& IfcCoordinatedUniversalTimeOffset::declaration() const { return *IfcCoordinatedUniversalTimeOffset_type; }
Type::Enum IfcCoordinatedUniversalTimeOffset::Class() { return Type::IfcCoordinatedUniversalTimeOffset; }
IfcCoordinatedUniversalTimeOffset::IfcCoordinatedUniversalTimeOffset(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcCoordinatedUniversalTimeOffset)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCoordinatedUniversalTimeOffset::IfcCoordinatedUniversalTimeOffset(int v1_HourOffset, boost::optional< int > v2_MinuteOffset, IfcAheadOrBehind::IfcAheadOrBehind v3_Sense) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_HourOffset)); if (v2_MinuteOffset) { e->setArgument(1,(*v2_MinuteOffset)); } else { e->setArgument(1); } e->setArgument(2,v3_Sense,IfcAheadOrBehind::ToString(v3_Sense)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCostItem


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

// Function implementations for IfcCostSchedule
bool IfcCostSchedule::hasSubmittedBy() const { return !data_->getArgument(5)->isNull(); }
IfcActorSelect* IfcCostSchedule::SubmittedBy() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcCostSchedule::setSubmittedBy(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcCostSchedule::hasPreparedBy() const { return !data_->getArgument(6)->isNull(); }
IfcActorSelect* IfcCostSchedule::PreparedBy() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcCostSchedule::setPreparedBy(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcCostSchedule::hasSubmittedOn() const { return !data_->getArgument(7)->isNull(); }
IfcDateTimeSelect* IfcCostSchedule::SubmittedOn() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcCostSchedule::setSubmittedOn(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcCostSchedule::hasStatus() const { return !data_->getArgument(8)->isNull(); }
std::string IfcCostSchedule::Status() const { return *data_->getArgument(8); }
void IfcCostSchedule::setStatus(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcCostSchedule::hasTargetUsers() const { return !data_->getArgument(9)->isNull(); }
IfcEntityList::ptr IfcCostSchedule::TargetUsers() const { return *data_->getArgument(9); }
void IfcCostSchedule::setTargetUsers(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcCostSchedule::hasUpdateDate() const { return !data_->getArgument(10)->isNull(); }
IfcDateTimeSelect* IfcCostSchedule::UpdateDate() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcCostSchedule::setUpdateDate(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
std::string IfcCostSchedule::ID() const { return *data_->getArgument(11); }
void IfcCostSchedule::setID(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum IfcCostSchedule::PredefinedType() const { return IfcCostScheduleTypeEnum::FromString(*data_->getArgument(12)); }
void IfcCostSchedule::setPredefinedType(IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v,IfcCostScheduleTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCostSchedule::declaration() const { return *IfcCostSchedule_type; }
Type::Enum IfcCostSchedule::Class() { return Type::IfcCostSchedule; }
IfcCostSchedule::IfcCostSchedule(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCostSchedule)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCostSchedule::IfcCostSchedule(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcActorSelect* v6_SubmittedBy, IfcActorSelect* v7_PreparedBy, IfcDateTimeSelect* v8_SubmittedOn, boost::optional< std::string > v9_Status, boost::optional< IfcEntityList::ptr > v10_TargetUsers, IfcDateTimeSelect* v11_UpdateDate, std::string v12_ID, IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum v13_PredefinedType) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_SubmittedBy)); e->setArgument(6,(v7_PreparedBy)); e->setArgument(7,(v8_SubmittedOn)); if (v9_Status) { e->setArgument(8,(*v9_Status)); } else { e->setArgument(8); } if (v10_TargetUsers) { e->setArgument(9,(*v10_TargetUsers)); } else { e->setArgument(9); } e->setArgument(10,(v11_UpdateDate)); e->setArgument(11,(v12_ID)); e->setArgument(12,v13_PredefinedType,IfcCostScheduleTypeEnum::ToString(v13_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCostValue
std::string IfcCostValue::CostType() const { return *data_->getArgument(6); }
void IfcCostValue::setCostType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcCostValue::hasCondition() const { return !data_->getArgument(7)->isNull(); }
std::string IfcCostValue::Condition() const { return *data_->getArgument(7); }
void IfcCostValue::setCondition(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcCostValue::declaration() const { return *IfcCostValue_type; }
Type::Enum IfcCostValue::Class() { return Type::IfcCostValue; }
IfcCostValue::IfcCostValue(IfcAbstractEntity* e) : IfcAppliedValue((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCostValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcAppliedValueSelect* v3_AppliedValue, IfcMeasureWithUnit* v4_UnitBasis, IfcDateTimeSelect* v5_ApplicableDate, IfcDateTimeSelect* v6_FixedUntilDate, std::string v7_CostType, boost::optional< std::string > v8_Condition) : IfcAppliedValue((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_AppliedValue)); e->setArgument(3,(v4_UnitBasis)); e->setArgument(4,(v5_ApplicableDate)); e->setArgument(5,(v6_FixedUntilDate)); e->setArgument(6,(v7_CostType)); if (v8_Condition) { e->setArgument(7,(*v8_Condition)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

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

IfcRelCoversSpaces::list::ptr IfcCovering::CoversSpaces() const { return data_->getInverse(Type::IfcRelCoversSpaces, 5)->as<IfcRelCoversSpaces>(); }
IfcRelCoversBldgElements::list::ptr IfcCovering::Covers() const { return data_->getInverse(Type::IfcRelCoversBldgElements, 5)->as<IfcRelCoversBldgElements>(); }

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

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


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

// Function implementations for IfcCraneRailAShapeProfileDef
double IfcCraneRailAShapeProfileDef::OverallHeight() const { return *data_->getArgument(3); }
void IfcCraneRailAShapeProfileDef::setOverallHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcCraneRailAShapeProfileDef::BaseWidth2() const { return *data_->getArgument(4); }
void IfcCraneRailAShapeProfileDef::setBaseWidth2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcCraneRailAShapeProfileDef::hasRadius() const { return !data_->getArgument(5)->isNull(); }
double IfcCraneRailAShapeProfileDef::Radius() const { return *data_->getArgument(5); }
void IfcCraneRailAShapeProfileDef::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcCraneRailAShapeProfileDef::HeadWidth() const { return *data_->getArgument(6); }
void IfcCraneRailAShapeProfileDef::setHeadWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
double IfcCraneRailAShapeProfileDef::HeadDepth2() const { return *data_->getArgument(7); }
void IfcCraneRailAShapeProfileDef::setHeadDepth2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
double IfcCraneRailAShapeProfileDef::HeadDepth3() const { return *data_->getArgument(8); }
void IfcCraneRailAShapeProfileDef::setHeadDepth3(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
double IfcCraneRailAShapeProfileDef::WebThickness() const { return *data_->getArgument(9); }
void IfcCraneRailAShapeProfileDef::setWebThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
double IfcCraneRailAShapeProfileDef::BaseWidth4() const { return *data_->getArgument(10); }
void IfcCraneRailAShapeProfileDef::setBaseWidth4(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
double IfcCraneRailAShapeProfileDef::BaseDepth1() const { return *data_->getArgument(11); }
void IfcCraneRailAShapeProfileDef::setBaseDepth1(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
double IfcCraneRailAShapeProfileDef::BaseDepth2() const { return *data_->getArgument(12); }
void IfcCraneRailAShapeProfileDef::setBaseDepth2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
double IfcCraneRailAShapeProfileDef::BaseDepth3() const { return *data_->getArgument(13); }
void IfcCraneRailAShapeProfileDef::setBaseDepth3(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcCraneRailAShapeProfileDef::hasCentreOfGravityInY() const { return !data_->getArgument(14)->isNull(); }
double IfcCraneRailAShapeProfileDef::CentreOfGravityInY() const { return *data_->getArgument(14); }
void IfcCraneRailAShapeProfileDef::setCentreOfGravityInY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }


const IfcParse::entity& IfcCraneRailAShapeProfileDef::declaration() const { return *IfcCraneRailAShapeProfileDef_type; }
Type::Enum IfcCraneRailAShapeProfileDef::Class() { return Type::IfcCraneRailAShapeProfileDef; }
IfcCraneRailAShapeProfileDef::IfcCraneRailAShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCraneRailAShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCraneRailAShapeProfileDef::IfcCraneRailAShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_OverallHeight, double v5_BaseWidth2, boost::optional< double > v6_Radius, double v7_HeadWidth, double v8_HeadDepth2, double v9_HeadDepth3, double v10_WebThickness, double v11_BaseWidth4, double v12_BaseDepth1, double v13_BaseDepth2, double v14_BaseDepth3, boost::optional< double > v15_CentreOfGravityInY) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_OverallHeight)); e->setArgument(4,(v5_BaseWidth2)); if (v6_Radius) { e->setArgument(5,(*v6_Radius)); } else { e->setArgument(5); } e->setArgument(6,(v7_HeadWidth)); e->setArgument(7,(v8_HeadDepth2)); e->setArgument(8,(v9_HeadDepth3)); e->setArgument(9,(v10_WebThickness)); e->setArgument(10,(v11_BaseWidth4)); e->setArgument(11,(v12_BaseDepth1)); e->setArgument(12,(v13_BaseDepth2)); e->setArgument(13,(v14_BaseDepth3)); if (v15_CentreOfGravityInY) { e->setArgument(14,(*v15_CentreOfGravityInY)); } else { e->setArgument(14); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCraneRailFShapeProfileDef
double IfcCraneRailFShapeProfileDef::OverallHeight() const { return *data_->getArgument(3); }
void IfcCraneRailFShapeProfileDef::setOverallHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcCraneRailFShapeProfileDef::HeadWidth() const { return *data_->getArgument(4); }
void IfcCraneRailFShapeProfileDef::setHeadWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcCraneRailFShapeProfileDef::hasRadius() const { return !data_->getArgument(5)->isNull(); }
double IfcCraneRailFShapeProfileDef::Radius() const { return *data_->getArgument(5); }
void IfcCraneRailFShapeProfileDef::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcCraneRailFShapeProfileDef::HeadDepth2() const { return *data_->getArgument(6); }
void IfcCraneRailFShapeProfileDef::setHeadDepth2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
double IfcCraneRailFShapeProfileDef::HeadDepth3() const { return *data_->getArgument(7); }
void IfcCraneRailFShapeProfileDef::setHeadDepth3(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
double IfcCraneRailFShapeProfileDef::WebThickness() const { return *data_->getArgument(8); }
void IfcCraneRailFShapeProfileDef::setWebThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
double IfcCraneRailFShapeProfileDef::BaseDepth1() const { return *data_->getArgument(9); }
void IfcCraneRailFShapeProfileDef::setBaseDepth1(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
double IfcCraneRailFShapeProfileDef::BaseDepth2() const { return *data_->getArgument(10); }
void IfcCraneRailFShapeProfileDef::setBaseDepth2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcCraneRailFShapeProfileDef::hasCentreOfGravityInY() const { return !data_->getArgument(11)->isNull(); }
double IfcCraneRailFShapeProfileDef::CentreOfGravityInY() const { return *data_->getArgument(11); }
void IfcCraneRailFShapeProfileDef::setCentreOfGravityInY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


const IfcParse::entity& IfcCraneRailFShapeProfileDef::declaration() const { return *IfcCraneRailFShapeProfileDef_type; }
Type::Enum IfcCraneRailFShapeProfileDef::Class() { return Type::IfcCraneRailFShapeProfileDef; }
IfcCraneRailFShapeProfileDef::IfcCraneRailFShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCraneRailFShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCraneRailFShapeProfileDef::IfcCraneRailFShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_OverallHeight, double v5_HeadWidth, boost::optional< double > v6_Radius, double v7_HeadDepth2, double v8_HeadDepth3, double v9_WebThickness, double v10_BaseDepth1, double v11_BaseDepth2, boost::optional< double > v12_CentreOfGravityInY) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_OverallHeight)); e->setArgument(4,(v5_HeadWidth)); if (v6_Radius) { e->setArgument(5,(*v6_Radius)); } else { e->setArgument(5); } e->setArgument(6,(v7_HeadDepth2)); e->setArgument(7,(v8_HeadDepth3)); e->setArgument(8,(v9_WebThickness)); e->setArgument(9,(v10_BaseDepth1)); e->setArgument(10,(v11_BaseDepth2)); if (v12_CentreOfGravityInY) { e->setArgument(11,(*v12_CentreOfGravityInY)); } else { e->setArgument(11); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCrewResource


const IfcParse::entity& IfcCrewResource::declaration() const { return *IfcCrewResource_type; }
Type::Enum IfcCrewResource::Class() { return Type::IfcCrewResource; }
IfcCrewResource::IfcCrewResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCrewResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCrewResource::IfcCrewResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_ResourceIdentifier, boost::optional< std::string > v7_ResourceGroup, boost::optional< IfcResourceConsumptionEnum::IfcResourceConsumptionEnum > v8_ResourceConsumption, IfcMeasureWithUnit* v9_BaseQuantity) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_ResourceIdentifier) { e->setArgument(5,(*v6_ResourceIdentifier)); } else { e->setArgument(5); } if (v7_ResourceGroup) { e->setArgument(6,(*v7_ResourceGroup)); } else { e->setArgument(6); } if (v8_ResourceConsumption) { e->setArgument(7,*v8_ResourceConsumption,IfcResourceConsumptionEnum::ToString(*v8_ResourceConsumption)); } else { e->setArgument(7); } e->setArgument(8,(v9_BaseQuantity)); data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcCsgSolid
IfcCsgSelect* IfcCsgSolid::TreeRootExpression() const { return (IfcCsgSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcCsgSolid::setTreeRootExpression(IfcCsgSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


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

// Function implementations for IfcCurrencyRelationship
IfcMonetaryUnit* IfcCurrencyRelationship::RelatingMonetaryUnit() const { return (IfcMonetaryUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcCurrencyRelationship::setRelatingMonetaryUnit(IfcMonetaryUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcMonetaryUnit* IfcCurrencyRelationship::RelatedMonetaryUnit() const { return (IfcMonetaryUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcCurrencyRelationship::setRelatedMonetaryUnit(IfcMonetaryUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcCurrencyRelationship::ExchangeRate() const { return *data_->getArgument(2); }
void IfcCurrencyRelationship::setExchangeRate(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcDateAndTime* IfcCurrencyRelationship::RateDateTime() const { return (IfcDateAndTime*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcCurrencyRelationship::setRateDateTime(IfcDateAndTime* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcCurrencyRelationship::hasRateSource() const { return !data_->getArgument(4)->isNull(); }
IfcLibraryInformation* IfcCurrencyRelationship::RateSource() const { return (IfcLibraryInformation*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcCurrencyRelationship::setRateSource(IfcLibraryInformation* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcCurrencyRelationship::declaration() const { return *IfcCurrencyRelationship_type; }
Type::Enum IfcCurrencyRelationship::Class() { return Type::IfcCurrencyRelationship; }
IfcCurrencyRelationship::IfcCurrencyRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcCurrencyRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurrencyRelationship::IfcCurrencyRelationship(IfcMonetaryUnit* v1_RelatingMonetaryUnit, IfcMonetaryUnit* v2_RelatedMonetaryUnit, double v3_ExchangeRate, IfcDateAndTime* v4_RateDateTime, IfcLibraryInformation* v5_RateSource) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RelatingMonetaryUnit)); e->setArgument(1,(v2_RelatedMonetaryUnit)); e->setArgument(2,(v3_ExchangeRate)); e->setArgument(3,(v4_RateDateTime)); e->setArgument(4,(v5_RateSource)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurtainWall


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

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


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

// Function implementations for IfcCurve


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

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


const IfcParse::entity& IfcCurveBoundedPlane::declaration() const { return *IfcCurveBoundedPlane_type; }
Type::Enum IfcCurveBoundedPlane::Class() { return Type::IfcCurveBoundedPlane; }
IfcCurveBoundedPlane::IfcCurveBoundedPlane(IfcAbstractEntity* e) : IfcBoundedSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurveBoundedPlane)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurveBoundedPlane::IfcCurveBoundedPlane(IfcPlane* v1_BasisSurface, IfcCurve* v2_OuterBoundary, IfcTemplatedEntityList< IfcCurve >::ptr v3_InnerBoundaries) : IfcBoundedSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisSurface)); e->setArgument(1,(v2_OuterBoundary)); e->setArgument(2,(v3_InnerBoundaries)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurveStyle
bool IfcCurveStyle::hasCurveFont() const { return !data_->getArgument(1)->isNull(); }
IfcCurveFontOrScaledCurveFontSelect* IfcCurveStyle::CurveFont() const { return (IfcCurveFontOrScaledCurveFontSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcCurveStyle::setCurveFont(IfcCurveFontOrScaledCurveFontSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcCurveStyle::hasCurveWidth() const { return !data_->getArgument(2)->isNull(); }
IfcSizeSelect* IfcCurveStyle::CurveWidth() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcCurveStyle::setCurveWidth(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcCurveStyle::hasCurveColour() const { return !data_->getArgument(3)->isNull(); }
IfcColour* IfcCurveStyle::CurveColour() const { return (IfcColour*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcCurveStyle::setCurveColour(IfcColour* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcCurveStyle::declaration() const { return *IfcCurveStyle_type; }
Type::Enum IfcCurveStyle::Class() { return Type::IfcCurveStyle; }
IfcCurveStyle::IfcCurveStyle(IfcAbstractEntity* e) : IfcPresentationStyle((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurveStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, IfcCurveFontOrScaledCurveFontSelect* v2_CurveFont, IfcSizeSelect* v3_CurveWidth, IfcColour* v4_CurveColour) : IfcPresentationStyle((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_CurveFont)); e->setArgument(2,(v3_CurveWidth)); e->setArgument(3,(v4_CurveColour)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurveStyleFont
bool IfcCurveStyleFont::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcCurveStyleFont::Name() const { return *data_->getArgument(0); }
void IfcCurveStyleFont::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcCurveStyleFontPattern >::ptr IfcCurveStyleFont::PatternList() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcCurveStyleFontPattern>(); }
void IfcCurveStyleFont::setPatternList(IfcTemplatedEntityList< IfcCurveStyleFontPattern >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }


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

// Function implementations for IfcCurveStyleFontAndScaling
bool IfcCurveStyleFontAndScaling::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcCurveStyleFontAndScaling::Name() const { return *data_->getArgument(0); }
void IfcCurveStyleFontAndScaling::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcCurveStyleFontSelect* IfcCurveStyleFontAndScaling::CurveFont() const { return (IfcCurveStyleFontSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcCurveStyleFontAndScaling::setCurveFont(IfcCurveStyleFontSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcCurveStyleFontAndScaling::CurveFontScaling() const { return *data_->getArgument(2); }
void IfcCurveStyleFontAndScaling::setCurveFontScaling(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


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

// Function implementations for IfcCurveStyleFontPattern
double IfcCurveStyleFontPattern::VisibleSegmentLength() const { return *data_->getArgument(0); }
void IfcCurveStyleFontPattern::setVisibleSegmentLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcCurveStyleFontPattern::InvisibleSegmentLength() const { return *data_->getArgument(1); }
void IfcCurveStyleFontPattern::setInvisibleSegmentLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcCurveStyleFontPattern::declaration() const { return *IfcCurveStyleFontPattern_type; }
Type::Enum IfcCurveStyleFontPattern::Class() { return Type::IfcCurveStyleFontPattern; }
IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcCurveStyleFontPattern)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(double v1_VisibleSegmentLength, double v2_InvisibleSegmentLength) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_VisibleSegmentLength)); e->setArgument(1,(v2_InvisibleSegmentLength)); data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcDateAndTime
IfcCalendarDate* IfcDateAndTime::DateComponent() const { return (IfcCalendarDate*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcDateAndTime::setDateComponent(IfcCalendarDate* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcLocalTime* IfcDateAndTime::TimeComponent() const { return (IfcLocalTime*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcDateAndTime::setTimeComponent(IfcLocalTime* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcDateAndTime::declaration() const { return *IfcDateAndTime_type; }
Type::Enum IfcDateAndTime::Class() { return Type::IfcDateAndTime; }
IfcDateAndTime::IfcDateAndTime(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcDateAndTime)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDateAndTime::IfcDateAndTime(IfcCalendarDate* v1_DateComponent, IfcLocalTime* v2_TimeComponent) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_DateComponent)); e->setArgument(1,(v2_TimeComponent)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDefinedSymbol
IfcDefinedSymbolSelect* IfcDefinedSymbol::Definition() const { return (IfcDefinedSymbolSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcDefinedSymbol::setDefinition(IfcDefinedSymbolSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcCartesianTransformationOperator2D* IfcDefinedSymbol::Target() const { return (IfcCartesianTransformationOperator2D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcDefinedSymbol::setTarget(IfcCartesianTransformationOperator2D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcDefinedSymbol::declaration() const { return *IfcDefinedSymbol_type; }
Type::Enum IfcDefinedSymbol::Class() { return Type::IfcDefinedSymbol; }
IfcDefinedSymbol::IfcDefinedSymbol(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDefinedSymbol)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDefinedSymbol::IfcDefinedSymbol(IfcDefinedSymbolSelect* v1_Definition, IfcCartesianTransformationOperator2D* v2_Target) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Definition)); e->setArgument(1,(v2_Target)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDerivedProfileDef
IfcProfileDef* IfcDerivedProfileDef::ParentProfile() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcDerivedProfileDef::setParentProfile(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcCartesianTransformationOperator2D* IfcDerivedProfileDef::Operator() const { return (IfcCartesianTransformationOperator2D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcDerivedProfileDef::setOperator(IfcCartesianTransformationOperator2D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcDerivedProfileDef::hasLabel() const { return !data_->getArgument(4)->isNull(); }
std::string IfcDerivedProfileDef::Label() const { return *data_->getArgument(4); }
void IfcDerivedProfileDef::setLabel(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


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

// Function implementations for IfcDerivedUnit
IfcTemplatedEntityList< IfcDerivedUnitElement >::ptr IfcDerivedUnit::Elements() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcDerivedUnitElement>(); }
void IfcDerivedUnit::setElements(IfcTemplatedEntityList< IfcDerivedUnitElement >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
IfcDerivedUnitEnum::IfcDerivedUnitEnum IfcDerivedUnit::UnitType() const { return IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); }
void IfcDerivedUnit::setUnitType(IfcDerivedUnitEnum::IfcDerivedUnitEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v,IfcDerivedUnitEnum::ToString(v)); }
bool IfcDerivedUnit::hasUserDefinedType() const { return !data_->getArgument(2)->isNull(); }
std::string IfcDerivedUnit::UserDefinedType() const { return *data_->getArgument(2); }
void IfcDerivedUnit::setUserDefinedType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcDerivedUnit::declaration() const { return *IfcDerivedUnit_type; }
Type::Enum IfcDerivedUnit::Class() { return Type::IfcDerivedUnit; }
IfcDerivedUnit::IfcDerivedUnit(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcDerivedUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDerivedUnit::IfcDerivedUnit(IfcTemplatedEntityList< IfcDerivedUnitElement >::ptr v1_Elements, IfcDerivedUnitEnum::IfcDerivedUnitEnum v2_UnitType, boost::optional< std::string > v3_UserDefinedType) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Elements)->generalize()); e->setArgument(1,v2_UnitType,IfcDerivedUnitEnum::ToString(v2_UnitType)); if (v3_UserDefinedType) { e->setArgument(2,(*v3_UserDefinedType)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDerivedUnitElement
IfcNamedUnit* IfcDerivedUnitElement::Unit() const { return (IfcNamedUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcDerivedUnitElement::setUnit(IfcNamedUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
int IfcDerivedUnitElement::Exponent() const { return *data_->getArgument(1); }
void IfcDerivedUnitElement::setExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcDerivedUnitElement::declaration() const { return *IfcDerivedUnitElement_type; }
Type::Enum IfcDerivedUnitElement::Class() { return Type::IfcDerivedUnitElement; }
IfcDerivedUnitElement::IfcDerivedUnitElement(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcDerivedUnitElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDerivedUnitElement::IfcDerivedUnitElement(IfcNamedUnit* v1_Unit, int v2_Exponent) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Unit)); e->setArgument(1,(v2_Exponent)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDiameterDimension


const IfcParse::entity& IfcDiameterDimension::declaration() const { return *IfcDiameterDimension_type; }
Type::Enum IfcDiameterDimension::Class() { return Type::IfcDiameterDimension; }
IfcDiameterDimension::IfcDiameterDimension(IfcAbstractEntity* e) : IfcDimensionCurveDirectedCallout((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDiameterDimension)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDiameterDimension::IfcDiameterDimension(IfcEntityList::ptr v1_Contents) : IfcDimensionCurveDirectedCallout((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Contents)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDimensionCalloutRelationship


const IfcParse::entity& IfcDimensionCalloutRelationship::declaration() const { return *IfcDimensionCalloutRelationship_type; }
Type::Enum IfcDimensionCalloutRelationship::Class() { return Type::IfcDimensionCalloutRelationship; }
IfcDimensionCalloutRelationship::IfcDimensionCalloutRelationship(IfcAbstractEntity* e) : IfcDraughtingCalloutRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDimensionCalloutRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDimensionCalloutRelationship::IfcDimensionCalloutRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcDraughtingCallout* v3_RelatingDraughtingCallout, IfcDraughtingCallout* v4_RelatedDraughtingCallout) : IfcDraughtingCalloutRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_RelatingDraughtingCallout)); e->setArgument(3,(v4_RelatedDraughtingCallout)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDimensionCurve

IfcTerminatorSymbol::list::ptr IfcDimensionCurve::AnnotatedBySymbols() const { return data_->getInverse(Type::IfcTerminatorSymbol, 3)->as<IfcTerminatorSymbol>(); }

const IfcParse::entity& IfcDimensionCurve::declaration() const { return *IfcDimensionCurve_type; }
Type::Enum IfcDimensionCurve::Class() { return Type::IfcDimensionCurve; }
IfcDimensionCurve::IfcDimensionCurve(IfcAbstractEntity* e) : IfcAnnotationCurveOccurrence((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDimensionCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDimensionCurve::IfcDimensionCurve(IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcAnnotationCurveOccurrence((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDimensionCurveDirectedCallout


const IfcParse::entity& IfcDimensionCurveDirectedCallout::declaration() const { return *IfcDimensionCurveDirectedCallout_type; }
Type::Enum IfcDimensionCurveDirectedCallout::Class() { return Type::IfcDimensionCurveDirectedCallout; }
IfcDimensionCurveDirectedCallout::IfcDimensionCurveDirectedCallout(IfcAbstractEntity* e) : IfcDraughtingCallout((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDimensionCurveDirectedCallout)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDimensionCurveDirectedCallout::IfcDimensionCurveDirectedCallout(IfcEntityList::ptr v1_Contents) : IfcDraughtingCallout((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Contents)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDimensionCurveTerminator
IfcDimensionExtentUsage::IfcDimensionExtentUsage IfcDimensionCurveTerminator::Role() const { return IfcDimensionExtentUsage::FromString(*data_->getArgument(4)); }
void IfcDimensionCurveTerminator::setRole(IfcDimensionExtentUsage::IfcDimensionExtentUsage v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcDimensionExtentUsage::ToString(v)); }


const IfcParse::entity& IfcDimensionCurveTerminator::declaration() const { return *IfcDimensionCurveTerminator_type; }
Type::Enum IfcDimensionCurveTerminator::Class() { return Type::IfcDimensionCurveTerminator; }
IfcDimensionCurveTerminator::IfcDimensionCurveTerminator(IfcAbstractEntity* e) : IfcTerminatorSymbol((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDimensionCurveTerminator)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDimensionCurveTerminator::IfcDimensionCurveTerminator(IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name, IfcAnnotationCurveOccurrence* v4_AnnotatedCurve, IfcDimensionExtentUsage::IfcDimensionExtentUsage v5_Role) : IfcTerminatorSymbol((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } e->setArgument(3,(v4_AnnotatedCurve)); e->setArgument(4,v5_Role,IfcDimensionExtentUsage::ToString(v5_Role)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDimensionPair


const IfcParse::entity& IfcDimensionPair::declaration() const { return *IfcDimensionPair_type; }
Type::Enum IfcDimensionPair::Class() { return Type::IfcDimensionPair; }
IfcDimensionPair::IfcDimensionPair(IfcAbstractEntity* e) : IfcDraughtingCalloutRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDimensionPair)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDimensionPair::IfcDimensionPair(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcDraughtingCallout* v3_RelatingDraughtingCallout, IfcDraughtingCallout* v4_RelatedDraughtingCallout) : IfcDraughtingCalloutRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_RelatingDraughtingCallout)); e->setArgument(3,(v4_RelatedDraughtingCallout)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDimensionalExponents
int IfcDimensionalExponents::LengthExponent() const { return *data_->getArgument(0); }
void IfcDimensionalExponents::setLengthExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
int IfcDimensionalExponents::MassExponent() const { return *data_->getArgument(1); }
void IfcDimensionalExponents::setMassExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
int IfcDimensionalExponents::TimeExponent() const { return *data_->getArgument(2); }
void IfcDimensionalExponents::setTimeExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
int IfcDimensionalExponents::ElectricCurrentExponent() const { return *data_->getArgument(3); }
void IfcDimensionalExponents::setElectricCurrentExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
int IfcDimensionalExponents::ThermodynamicTemperatureExponent() const { return *data_->getArgument(4); }
void IfcDimensionalExponents::setThermodynamicTemperatureExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
int IfcDimensionalExponents::AmountOfSubstanceExponent() const { return *data_->getArgument(5); }
void IfcDimensionalExponents::setAmountOfSubstanceExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
int IfcDimensionalExponents::LuminousIntensityExponent() const { return *data_->getArgument(6); }
void IfcDimensionalExponents::setLuminousIntensityExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcDimensionalExponents::declaration() const { return *IfcDimensionalExponents_type; }
Type::Enum IfcDimensionalExponents::Class() { return Type::IfcDimensionalExponents; }
IfcDimensionalExponents::IfcDimensionalExponents(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcDimensionalExponents)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDimensionalExponents::IfcDimensionalExponents(int v1_LengthExponent, int v2_MassExponent, int v3_TimeExponent, int v4_ElectricCurrentExponent, int v5_ThermodynamicTemperatureExponent, int v6_AmountOfSubstanceExponent, int v7_LuminousIntensityExponent) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_LengthExponent)); e->setArgument(1,(v2_MassExponent)); e->setArgument(2,(v3_TimeExponent)); e->setArgument(3,(v4_ElectricCurrentExponent)); e->setArgument(4,(v5_ThermodynamicTemperatureExponent)); e->setArgument(5,(v6_AmountOfSubstanceExponent)); e->setArgument(6,(v7_LuminousIntensityExponent)); data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcDiscreteAccessory


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

// Function implementations for IfcDiscreteAccessoryType


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

// Function implementations for IfcDistributionChamberElement


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

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


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

// Function implementations for IfcDistributionControlElement
bool IfcDistributionControlElement::hasControlElementId() const { return !data_->getArgument(8)->isNull(); }
std::string IfcDistributionControlElement::ControlElementId() const { return *data_->getArgument(8); }
void IfcDistributionControlElement::setControlElementId(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }

IfcRelFlowControlElements::list::ptr IfcDistributionControlElement::AssignedToFlowElement() const { return data_->getInverse(Type::IfcRelFlowControlElements, 4)->as<IfcRelFlowControlElements>(); }

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

// Function implementations for IfcDistributionControlElementType


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

// Function implementations for IfcDistributionElement


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

// Function implementations for IfcDistributionElementType


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

// Function implementations for IfcDistributionFlowElement

IfcRelFlowControlElements::list::ptr IfcDistributionFlowElement::HasControlElements() const { return data_->getInverse(Type::IfcRelFlowControlElements, 5)->as<IfcRelFlowControlElements>(); }

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

// Function implementations for IfcDistributionFlowElementType


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

// Function implementations for IfcDistributionPort
bool IfcDistributionPort::hasFlowDirection() const { return !data_->getArgument(7)->isNull(); }
IfcFlowDirectionEnum::IfcFlowDirectionEnum IfcDistributionPort::FlowDirection() const { return IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); }
void IfcDistributionPort::setFlowDirection(IfcFlowDirectionEnum::IfcFlowDirectionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcFlowDirectionEnum::ToString(v)); }


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

// Function implementations for IfcDocumentElectronicFormat
bool IfcDocumentElectronicFormat::hasFileExtension() const { return !data_->getArgument(0)->isNull(); }
std::string IfcDocumentElectronicFormat::FileExtension() const { return *data_->getArgument(0); }
void IfcDocumentElectronicFormat::setFileExtension(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcDocumentElectronicFormat::hasMimeContentType() const { return !data_->getArgument(1)->isNull(); }
std::string IfcDocumentElectronicFormat::MimeContentType() const { return *data_->getArgument(1); }
void IfcDocumentElectronicFormat::setMimeContentType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcDocumentElectronicFormat::hasMimeSubtype() const { return !data_->getArgument(2)->isNull(); }
std::string IfcDocumentElectronicFormat::MimeSubtype() const { return *data_->getArgument(2); }
void IfcDocumentElectronicFormat::setMimeSubtype(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


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

// Function implementations for IfcDocumentInformation
std::string IfcDocumentInformation::DocumentId() const { return *data_->getArgument(0); }
void IfcDocumentInformation::setDocumentId(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
std::string IfcDocumentInformation::Name() const { return *data_->getArgument(1); }
void IfcDocumentInformation::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcDocumentInformation::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcDocumentInformation::Description() const { return *data_->getArgument(2); }
void IfcDocumentInformation::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcDocumentInformation::hasDocumentReferences() const { return !data_->getArgument(3)->isNull(); }
IfcTemplatedEntityList< IfcDocumentReference >::ptr IfcDocumentInformation::DocumentReferences() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcDocumentReference>(); }
void IfcDocumentInformation::setDocumentReferences(IfcTemplatedEntityList< IfcDocumentReference >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }
bool IfcDocumentInformation::hasPurpose() const { return !data_->getArgument(4)->isNull(); }
std::string IfcDocumentInformation::Purpose() const { return *data_->getArgument(4); }
void IfcDocumentInformation::setPurpose(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcDocumentInformation::hasIntendedUse() const { return !data_->getArgument(5)->isNull(); }
std::string IfcDocumentInformation::IntendedUse() const { return *data_->getArgument(5); }
void IfcDocumentInformation::setIntendedUse(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcDocumentInformation::hasScope() const { return !data_->getArgument(6)->isNull(); }
std::string IfcDocumentInformation::Scope() const { return *data_->getArgument(6); }
void IfcDocumentInformation::setScope(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcDocumentInformation::hasRevision() const { return !data_->getArgument(7)->isNull(); }
std::string IfcDocumentInformation::Revision() const { return *data_->getArgument(7); }
void IfcDocumentInformation::setRevision(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcDocumentInformation::hasDocumentOwner() const { return !data_->getArgument(8)->isNull(); }
IfcActorSelect* IfcDocumentInformation::DocumentOwner() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcDocumentInformation::setDocumentOwner(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcDocumentInformation::hasEditors() const { return !data_->getArgument(9)->isNull(); }
IfcEntityList::ptr IfcDocumentInformation::Editors() const { return *data_->getArgument(9); }
void IfcDocumentInformation::setEditors(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcDocumentInformation::hasCreationTime() const { return !data_->getArgument(10)->isNull(); }
IfcDateAndTime* IfcDocumentInformation::CreationTime() const { return (IfcDateAndTime*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcDocumentInformation::setCreationTime(IfcDateAndTime* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcDocumentInformation::hasLastRevisionTime() const { return !data_->getArgument(11)->isNull(); }
IfcDateAndTime* IfcDocumentInformation::LastRevisionTime() const { return (IfcDateAndTime*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(11))); }
void IfcDocumentInformation::setLastRevisionTime(IfcDateAndTime* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcDocumentInformation::hasElectronicFormat() const { return !data_->getArgument(12)->isNull(); }
IfcDocumentElectronicFormat* IfcDocumentInformation::ElectronicFormat() const { return (IfcDocumentElectronicFormat*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(12))); }
void IfcDocumentInformation::setElectronicFormat(IfcDocumentElectronicFormat* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcDocumentInformation::hasValidFrom() const { return !data_->getArgument(13)->isNull(); }
IfcCalendarDate* IfcDocumentInformation::ValidFrom() const { return (IfcCalendarDate*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(13))); }
void IfcDocumentInformation::setValidFrom(IfcCalendarDate* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcDocumentInformation::hasValidUntil() const { return !data_->getArgument(14)->isNull(); }
IfcCalendarDate* IfcDocumentInformation::ValidUntil() const { return (IfcCalendarDate*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(14))); }
void IfcDocumentInformation::setValidUntil(IfcCalendarDate* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcDocumentInformation::hasConfidentiality() const { return !data_->getArgument(15)->isNull(); }
IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum IfcDocumentInformation::Confidentiality() const { return IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); }
void IfcDocumentInformation::setConfidentiality(IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v,IfcDocumentConfidentialityEnum::ToString(v)); }
bool IfcDocumentInformation::hasStatus() const { return !data_->getArgument(16)->isNull(); }
IfcDocumentStatusEnum::IfcDocumentStatusEnum IfcDocumentInformation::Status() const { return IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); }
void IfcDocumentInformation::setStatus(IfcDocumentStatusEnum::IfcDocumentStatusEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v,IfcDocumentStatusEnum::ToString(v)); }

IfcDocumentInformationRelationship::list::ptr IfcDocumentInformation::IsPointedTo() const { return data_->getInverse(Type::IfcDocumentInformationRelationship, 1)->as<IfcDocumentInformationRelationship>(); }
IfcDocumentInformationRelationship::list::ptr IfcDocumentInformation::IsPointer() const { return data_->getInverse(Type::IfcDocumentInformationRelationship, 0)->as<IfcDocumentInformationRelationship>(); }

const IfcParse::entity& IfcDocumentInformation::declaration() const { return *IfcDocumentInformation_type; }
Type::Enum IfcDocumentInformation::Class() { return Type::IfcDocumentInformation; }
IfcDocumentInformation::IfcDocumentInformation(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcDocumentInformation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDocumentInformation::IfcDocumentInformation(std::string v1_DocumentId, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< IfcTemplatedEntityList< IfcDocumentReference >::ptr > v4_DocumentReferences, boost::optional< std::string > v5_Purpose, boost::optional< std::string > v6_IntendedUse, boost::optional< std::string > v7_Scope, boost::optional< std::string > v8_Revision, IfcActorSelect* v9_DocumentOwner, boost::optional< IfcEntityList::ptr > v10_Editors, IfcDateAndTime* v11_CreationTime, IfcDateAndTime* v12_LastRevisionTime, IfcDocumentElectronicFormat* v13_ElectronicFormat, IfcCalendarDate* v14_ValidFrom, IfcCalendarDate* v15_ValidUntil, boost::optional< IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum > v16_Confidentiality, boost::optional< IfcDocumentStatusEnum::IfcDocumentStatusEnum > v17_Status) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_DocumentId)); e->setArgument(1,(v2_Name)); if (v3_Description) { e->setArgument(2,(*v3_Description)); } else { e->setArgument(2); } if (v4_DocumentReferences) { e->setArgument(3,(*v4_DocumentReferences)->generalize()); } else { e->setArgument(3); } if (v5_Purpose) { e->setArgument(4,(*v5_Purpose)); } else { e->setArgument(4); } if (v6_IntendedUse) { e->setArgument(5,(*v6_IntendedUse)); } else { e->setArgument(5); } if (v7_Scope) { e->setArgument(6,(*v7_Scope)); } else { e->setArgument(6); } if (v8_Revision) { e->setArgument(7,(*v8_Revision)); } else { e->setArgument(7); } e->setArgument(8,(v9_DocumentOwner)); if (v10_Editors) { e->setArgument(9,(*v10_Editors)); } else { e->setArgument(9); } e->setArgument(10,(v11_CreationTime)); e->setArgument(11,(v12_LastRevisionTime)); e->setArgument(12,(v13_ElectronicFormat)); e->setArgument(13,(v14_ValidFrom)); e->setArgument(14,(v15_ValidUntil)); if (v16_Confidentiality) { e->setArgument(15,*v16_Confidentiality,IfcDocumentConfidentialityEnum::ToString(*v16_Confidentiality)); } else { e->setArgument(15); } if (v17_Status) { e->setArgument(16,*v17_Status,IfcDocumentStatusEnum::ToString(*v17_Status)); } else { e->setArgument(16); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDocumentInformationRelationship
IfcDocumentInformation* IfcDocumentInformationRelationship::RelatingDocument() const { return (IfcDocumentInformation*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcDocumentInformationRelationship::setRelatingDocument(IfcDocumentInformation* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcDocumentInformation >::ptr IfcDocumentInformationRelationship::RelatedDocuments() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcDocumentInformation>(); }
void IfcDocumentInformationRelationship::setRelatedDocuments(IfcTemplatedEntityList< IfcDocumentInformation >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
bool IfcDocumentInformationRelationship::hasRelationshipType() const { return !data_->getArgument(2)->isNull(); }
std::string IfcDocumentInformationRelationship::RelationshipType() const { return *data_->getArgument(2); }
void IfcDocumentInformationRelationship::setRelationshipType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcDocumentInformationRelationship::declaration() const { return *IfcDocumentInformationRelationship_type; }
Type::Enum IfcDocumentInformationRelationship::Class() { return Type::IfcDocumentInformationRelationship; }
IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcDocumentInformationRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(IfcDocumentInformation* v1_RelatingDocument, IfcTemplatedEntityList< IfcDocumentInformation >::ptr v2_RelatedDocuments, boost::optional< std::string > v3_RelationshipType) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RelatingDocument)); e->setArgument(1,(v2_RelatedDocuments)->generalize()); if (v3_RelationshipType) { e->setArgument(2,(*v3_RelationshipType)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDocumentReference

IfcDocumentInformation::list::ptr IfcDocumentReference::ReferenceToDocument() const { return data_->getInverse(Type::IfcDocumentInformation, 3)->as<IfcDocumentInformation>(); }

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

// Function implementations for IfcDoor
bool IfcDoor::hasOverallHeight() const { return !data_->getArgument(8)->isNull(); }
double IfcDoor::OverallHeight() const { return *data_->getArgument(8); }
void IfcDoor::setOverallHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcDoor::hasOverallWidth() const { return !data_->getArgument(9)->isNull(); }
double IfcDoor::OverallWidth() const { return *data_->getArgument(9); }
void IfcDoor::setOverallWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


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

// Function implementations for IfcDoorLiningProperties
bool IfcDoorLiningProperties::hasLiningDepth() const { return !data_->getArgument(4)->isNull(); }
double IfcDoorLiningProperties::LiningDepth() const { return *data_->getArgument(4); }
void IfcDoorLiningProperties::setLiningDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcDoorLiningProperties::hasLiningThickness() const { return !data_->getArgument(5)->isNull(); }
double IfcDoorLiningProperties::LiningThickness() const { return *data_->getArgument(5); }
void IfcDoorLiningProperties::setLiningThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcDoorLiningProperties::hasThresholdDepth() const { return !data_->getArgument(6)->isNull(); }
double IfcDoorLiningProperties::ThresholdDepth() const { return *data_->getArgument(6); }
void IfcDoorLiningProperties::setThresholdDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcDoorLiningProperties::hasThresholdThickness() const { return !data_->getArgument(7)->isNull(); }
double IfcDoorLiningProperties::ThresholdThickness() const { return *data_->getArgument(7); }
void IfcDoorLiningProperties::setThresholdThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcDoorLiningProperties::hasTransomThickness() const { return !data_->getArgument(8)->isNull(); }
double IfcDoorLiningProperties::TransomThickness() const { return *data_->getArgument(8); }
void IfcDoorLiningProperties::setTransomThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcDoorLiningProperties::hasTransomOffset() const { return !data_->getArgument(9)->isNull(); }
double IfcDoorLiningProperties::TransomOffset() const { return *data_->getArgument(9); }
void IfcDoorLiningProperties::setTransomOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcDoorLiningProperties::hasLiningOffset() const { return !data_->getArgument(10)->isNull(); }
double IfcDoorLiningProperties::LiningOffset() const { return *data_->getArgument(10); }
void IfcDoorLiningProperties::setLiningOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcDoorLiningProperties::hasThresholdOffset() const { return !data_->getArgument(11)->isNull(); }
double IfcDoorLiningProperties::ThresholdOffset() const { return *data_->getArgument(11); }
void IfcDoorLiningProperties::setThresholdOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcDoorLiningProperties::hasCasingThickness() const { return !data_->getArgument(12)->isNull(); }
double IfcDoorLiningProperties::CasingThickness() const { return *data_->getArgument(12); }
void IfcDoorLiningProperties::setCasingThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcDoorLiningProperties::hasCasingDepth() const { return !data_->getArgument(13)->isNull(); }
double IfcDoorLiningProperties::CasingDepth() const { return *data_->getArgument(13); }
void IfcDoorLiningProperties::setCasingDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcDoorLiningProperties::hasShapeAspectStyle() const { return !data_->getArgument(14)->isNull(); }
IfcShapeAspect* IfcDoorLiningProperties::ShapeAspectStyle() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(14))); }
void IfcDoorLiningProperties::setShapeAspectStyle(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }


const IfcParse::entity& IfcDoorLiningProperties::declaration() const { return *IfcDoorLiningProperties_type; }
Type::Enum IfcDoorLiningProperties::Class() { return Type::IfcDoorLiningProperties; }
IfcDoorLiningProperties::IfcDoorLiningProperties(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDoorLiningProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_LiningDepth, boost::optional< double > v6_LiningThickness, boost::optional< double > v7_ThresholdDepth, boost::optional< double > v8_ThresholdThickness, boost::optional< double > v9_TransomThickness, boost::optional< double > v10_TransomOffset, boost::optional< double > v11_LiningOffset, boost::optional< double > v12_ThresholdOffset, boost::optional< double > v13_CasingThickness, boost::optional< double > v14_CasingDepth, IfcShapeAspect* v15_ShapeAspectStyle) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_LiningDepth) { e->setArgument(4,(*v5_LiningDepth)); } else { e->setArgument(4); } if (v6_LiningThickness) { e->setArgument(5,(*v6_LiningThickness)); } else { e->setArgument(5); } if (v7_ThresholdDepth) { e->setArgument(6,(*v7_ThresholdDepth)); } else { e->setArgument(6); } if (v8_ThresholdThickness) { e->setArgument(7,(*v8_ThresholdThickness)); } else { e->setArgument(7); } if (v9_TransomThickness) { e->setArgument(8,(*v9_TransomThickness)); } else { e->setArgument(8); } if (v10_TransomOffset) { e->setArgument(9,(*v10_TransomOffset)); } else { e->setArgument(9); } if (v11_LiningOffset) { e->setArgument(10,(*v11_LiningOffset)); } else { e->setArgument(10); } if (v12_ThresholdOffset) { e->setArgument(11,(*v12_ThresholdOffset)); } else { e->setArgument(11); } if (v13_CasingThickness) { e->setArgument(12,(*v13_CasingThickness)); } else { e->setArgument(12); } if (v14_CasingDepth) { e->setArgument(13,(*v14_CasingDepth)); } else { e->setArgument(13); } e->setArgument(14,(v15_ShapeAspectStyle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDoorPanelProperties
bool IfcDoorPanelProperties::hasPanelDepth() const { return !data_->getArgument(4)->isNull(); }
double IfcDoorPanelProperties::PanelDepth() const { return *data_->getArgument(4); }
void IfcDoorPanelProperties::setPanelDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum IfcDoorPanelProperties::PanelOperation() const { return IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); }
void IfcDoorPanelProperties::setPanelOperation(IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcDoorPanelOperationEnum::ToString(v)); }
bool IfcDoorPanelProperties::hasPanelWidth() const { return !data_->getArgument(6)->isNull(); }
double IfcDoorPanelProperties::PanelWidth() const { return *data_->getArgument(6); }
void IfcDoorPanelProperties::setPanelWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum IfcDoorPanelProperties::PanelPosition() const { return IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); }
void IfcDoorPanelProperties::setPanelPosition(IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcDoorPanelPositionEnum::ToString(v)); }
bool IfcDoorPanelProperties::hasShapeAspectStyle() const { return !data_->getArgument(8)->isNull(); }
IfcShapeAspect* IfcDoorPanelProperties::ShapeAspectStyle() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcDoorPanelProperties::setShapeAspectStyle(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcDoorPanelProperties::declaration() const { return *IfcDoorPanelProperties_type; }
Type::Enum IfcDoorPanelProperties::Class() { return Type::IfcDoorPanelProperties; }
IfcDoorPanelProperties::IfcDoorPanelProperties(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDoorPanelProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDoorPanelProperties::IfcDoorPanelProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_PanelDepth, IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum v6_PanelOperation, boost::optional< double > v7_PanelWidth, IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum v8_PanelPosition, IfcShapeAspect* v9_ShapeAspectStyle) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_PanelDepth) { e->setArgument(4,(*v5_PanelDepth)); } else { e->setArgument(4); } e->setArgument(5,v6_PanelOperation,IfcDoorPanelOperationEnum::ToString(v6_PanelOperation)); if (v7_PanelWidth) { e->setArgument(6,(*v7_PanelWidth)); } else { e->setArgument(6); } e->setArgument(7,v8_PanelPosition,IfcDoorPanelPositionEnum::ToString(v8_PanelPosition)); e->setArgument(8,(v9_ShapeAspectStyle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDoorStyle
IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum IfcDoorStyle::OperationType() const { return IfcDoorStyleOperationEnum::FromString(*data_->getArgument(8)); }
void IfcDoorStyle::setOperationType(IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcDoorStyleOperationEnum::ToString(v)); }
IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum IfcDoorStyle::ConstructionType() const { return IfcDoorStyleConstructionEnum::FromString(*data_->getArgument(9)); }
void IfcDoorStyle::setConstructionType(IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcDoorStyleConstructionEnum::ToString(v)); }
bool IfcDoorStyle::ParameterTakesPrecedence() const { return *data_->getArgument(10); }
void IfcDoorStyle::setParameterTakesPrecedence(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcDoorStyle::Sizeable() const { return *data_->getArgument(11); }
void IfcDoorStyle::setSizeable(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


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

// Function implementations for IfcDraughtingCallout
IfcEntityList::ptr IfcDraughtingCallout::Contents() const { return *data_->getArgument(0); }
void IfcDraughtingCallout::setContents(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }

IfcDraughtingCalloutRelationship::list::ptr IfcDraughtingCallout::IsRelatedFromCallout() const { return data_->getInverse(Type::IfcDraughtingCalloutRelationship, 3)->as<IfcDraughtingCalloutRelationship>(); }
IfcDraughtingCalloutRelationship::list::ptr IfcDraughtingCallout::IsRelatedToCallout() const { return data_->getInverse(Type::IfcDraughtingCalloutRelationship, 2)->as<IfcDraughtingCalloutRelationship>(); }

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

// Function implementations for IfcDraughtingCalloutRelationship
bool IfcDraughtingCalloutRelationship::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcDraughtingCalloutRelationship::Name() const { return *data_->getArgument(0); }
void IfcDraughtingCalloutRelationship::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcDraughtingCalloutRelationship::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcDraughtingCalloutRelationship::Description() const { return *data_->getArgument(1); }
void IfcDraughtingCalloutRelationship::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcDraughtingCallout* IfcDraughtingCalloutRelationship::RelatingDraughtingCallout() const { return (IfcDraughtingCallout*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcDraughtingCalloutRelationship::setRelatingDraughtingCallout(IfcDraughtingCallout* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcDraughtingCallout* IfcDraughtingCalloutRelationship::RelatedDraughtingCallout() const { return (IfcDraughtingCallout*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcDraughtingCalloutRelationship::setRelatedDraughtingCallout(IfcDraughtingCallout* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


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

// Function implementations for IfcDraughtingPreDefinedColour


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

// Function implementations for IfcDraughtingPreDefinedCurveFont


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

// Function implementations for IfcDraughtingPreDefinedTextFont


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

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


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

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


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

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


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

// Function implementations for IfcEdge
IfcVertex* IfcEdge::EdgeStart() const { return (IfcVertex*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcEdge::setEdgeStart(IfcVertex* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcVertex* IfcEdge::EdgeEnd() const { return (IfcVertex*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcEdge::setEdgeEnd(IfcVertex* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcEdge::declaration() const { return *IfcEdge_type; }
Type::Enum IfcEdge::Class() { return Type::IfcEdge; }
IfcEdge::IfcEdge(IfcAbstractEntity* e) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEdge)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEdge::IfcEdge(IfcVertex* v1_EdgeStart, IfcVertex* v2_EdgeEnd) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_EdgeStart)); e->setArgument(1,(v2_EdgeEnd)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEdgeCurve
IfcCurve* IfcEdgeCurve::EdgeGeometry() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcEdgeCurve::setEdgeGeometry(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcEdgeCurve::SameSense() const { return *data_->getArgument(3); }
void IfcEdgeCurve::setSameSense(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcEdgeCurve::declaration() const { return *IfcEdgeCurve_type; }
Type::Enum IfcEdgeCurve::Class() { return Type::IfcEdgeCurve; }
IfcEdgeCurve::IfcEdgeCurve(IfcAbstractEntity* e) : IfcEdge((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEdgeCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEdgeCurve::IfcEdgeCurve(IfcVertex* v1_EdgeStart, IfcVertex* v2_EdgeEnd, IfcCurve* v3_EdgeGeometry, bool v4_SameSense) : IfcEdge((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_EdgeStart)); e->setArgument(1,(v2_EdgeEnd)); e->setArgument(2,(v3_EdgeGeometry)); e->setArgument(3,(v4_SameSense)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEdgeFeature
bool IfcEdgeFeature::hasFeatureLength() const { return !data_->getArgument(8)->isNull(); }
double IfcEdgeFeature::FeatureLength() const { return *data_->getArgument(8); }
void IfcEdgeFeature::setFeatureLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


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

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


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

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


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

// Function implementations for IfcElectricDistributionPoint
IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunctionEnum IfcElectricDistributionPoint::DistributionPointFunction() const { return IfcElectricDistributionPointFunctionEnum::FromString(*data_->getArgument(8)); }
void IfcElectricDistributionPoint::setDistributionPointFunction(IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunctionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcElectricDistributionPointFunctionEnum::ToString(v)); }
bool IfcElectricDistributionPoint::hasUserDefinedFunction() const { return !data_->getArgument(9)->isNull(); }
std::string IfcElectricDistributionPoint::UserDefinedFunction() const { return *data_->getArgument(9); }
void IfcElectricDistributionPoint::setUserDefinedFunction(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


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

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


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

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


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

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


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

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


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

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


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

// Function implementations for IfcElectricalBaseProperties
bool IfcElectricalBaseProperties::hasElectricCurrentType() const { return !data_->getArgument(6)->isNull(); }
IfcElectricCurrentEnum::IfcElectricCurrentEnum IfcElectricalBaseProperties::ElectricCurrentType() const { return IfcElectricCurrentEnum::FromString(*data_->getArgument(6)); }
void IfcElectricalBaseProperties::setElectricCurrentType(IfcElectricCurrentEnum::IfcElectricCurrentEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcElectricCurrentEnum::ToString(v)); }
double IfcElectricalBaseProperties::InputVoltage() const { return *data_->getArgument(7); }
void IfcElectricalBaseProperties::setInputVoltage(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
double IfcElectricalBaseProperties::InputFrequency() const { return *data_->getArgument(8); }
void IfcElectricalBaseProperties::setInputFrequency(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcElectricalBaseProperties::hasFullLoadCurrent() const { return !data_->getArgument(9)->isNull(); }
double IfcElectricalBaseProperties::FullLoadCurrent() const { return *data_->getArgument(9); }
void IfcElectricalBaseProperties::setFullLoadCurrent(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcElectricalBaseProperties::hasMinimumCircuitCurrent() const { return !data_->getArgument(10)->isNull(); }
double IfcElectricalBaseProperties::MinimumCircuitCurrent() const { return *data_->getArgument(10); }
void IfcElectricalBaseProperties::setMinimumCircuitCurrent(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcElectricalBaseProperties::hasMaximumPowerInput() const { return !data_->getArgument(11)->isNull(); }
double IfcElectricalBaseProperties::MaximumPowerInput() const { return *data_->getArgument(11); }
void IfcElectricalBaseProperties::setMaximumPowerInput(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcElectricalBaseProperties::hasRatedPowerInput() const { return !data_->getArgument(12)->isNull(); }
double IfcElectricalBaseProperties::RatedPowerInput() const { return *data_->getArgument(12); }
void IfcElectricalBaseProperties::setRatedPowerInput(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
int IfcElectricalBaseProperties::InputPhase() const { return *data_->getArgument(13); }
void IfcElectricalBaseProperties::setInputPhase(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }


const IfcParse::entity& IfcElectricalBaseProperties::declaration() const { return *IfcElectricalBaseProperties_type; }
Type::Enum IfcElectricalBaseProperties::Class() { return Type::IfcElectricalBaseProperties; }
IfcElectricalBaseProperties::IfcElectricalBaseProperties(IfcAbstractEntity* e) : IfcEnergyProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricalBaseProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricalBaseProperties::IfcElectricalBaseProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< IfcEnergySequenceEnum::IfcEnergySequenceEnum > v5_EnergySequence, boost::optional< std::string > v6_UserDefinedEnergySequence, boost::optional< IfcElectricCurrentEnum::IfcElectricCurrentEnum > v7_ElectricCurrentType, double v8_InputVoltage, double v9_InputFrequency, boost::optional< double > v10_FullLoadCurrent, boost::optional< double > v11_MinimumCircuitCurrent, boost::optional< double > v12_MaximumPowerInput, boost::optional< double > v13_RatedPowerInput, int v14_InputPhase) : IfcEnergyProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_EnergySequence) { e->setArgument(4,*v5_EnergySequence,IfcEnergySequenceEnum::ToString(*v5_EnergySequence)); } else { e->setArgument(4); } if (v6_UserDefinedEnergySequence) { e->setArgument(5,(*v6_UserDefinedEnergySequence)); } else { e->setArgument(5); } if (v7_ElectricCurrentType) { e->setArgument(6,*v7_ElectricCurrentType,IfcElectricCurrentEnum::ToString(*v7_ElectricCurrentType)); } else { e->setArgument(6); } e->setArgument(7,(v8_InputVoltage)); e->setArgument(8,(v9_InputFrequency)); if (v10_FullLoadCurrent) { e->setArgument(9,(*v10_FullLoadCurrent)); } else { e->setArgument(9); } if (v11_MinimumCircuitCurrent) { e->setArgument(10,(*v11_MinimumCircuitCurrent)); } else { e->setArgument(10); } if (v12_MaximumPowerInput) { e->setArgument(11,(*v12_MaximumPowerInput)); } else { e->setArgument(11); } if (v13_RatedPowerInput) { e->setArgument(12,(*v13_RatedPowerInput)); } else { e->setArgument(12); } e->setArgument(13,(v14_InputPhase)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricalCircuit


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

// Function implementations for IfcElectricalElement


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

// Function implementations for IfcElement
bool IfcElement::hasTag() const { return !data_->getArgument(7)->isNull(); }
std::string IfcElement::Tag() const { return *data_->getArgument(7); }
void IfcElement::setTag(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }

IfcRelConnectsStructuralElement::list::ptr IfcElement::HasStructuralMember() const { return data_->getInverse(Type::IfcRelConnectsStructuralElement, 4)->as<IfcRelConnectsStructuralElement>(); }
IfcRelFillsElement::list::ptr IfcElement::FillsVoids() const { return data_->getInverse(Type::IfcRelFillsElement, 5)->as<IfcRelFillsElement>(); }
IfcRelConnectsElements::list::ptr IfcElement::ConnectedTo() const { return data_->getInverse(Type::IfcRelConnectsElements, 5)->as<IfcRelConnectsElements>(); }
IfcRelCoversBldgElements::list::ptr IfcElement::HasCoverings() const { return data_->getInverse(Type::IfcRelCoversBldgElements, 4)->as<IfcRelCoversBldgElements>(); }
IfcRelProjectsElement::list::ptr IfcElement::HasProjections() const { return data_->getInverse(Type::IfcRelProjectsElement, 4)->as<IfcRelProjectsElement>(); }
IfcRelReferencedInSpatialStructure::list::ptr IfcElement::ReferencedInStructures() const { return data_->getInverse(Type::IfcRelReferencedInSpatialStructure, 4)->as<IfcRelReferencedInSpatialStructure>(); }
IfcRelConnectsPortToElement::list::ptr IfcElement::HasPorts() const { return data_->getInverse(Type::IfcRelConnectsPortToElement, 5)->as<IfcRelConnectsPortToElement>(); }
IfcRelVoidsElement::list::ptr IfcElement::HasOpenings() const { return data_->getInverse(Type::IfcRelVoidsElement, 4)->as<IfcRelVoidsElement>(); }
IfcRelConnectsWithRealizingElements::list::ptr IfcElement::IsConnectionRealization() const { return data_->getInverse(Type::IfcRelConnectsWithRealizingElements, 7)->as<IfcRelConnectsWithRealizingElements>(); }
IfcRelSpaceBoundary::list::ptr IfcElement::ProvidesBoundaries() const { return data_->getInverse(Type::IfcRelSpaceBoundary, 5)->as<IfcRelSpaceBoundary>(); }
IfcRelConnectsElements::list::ptr IfcElement::ConnectedFrom() const { return data_->getInverse(Type::IfcRelConnectsElements, 6)->as<IfcRelConnectsElements>(); }
IfcRelContainedInSpatialStructure::list::ptr IfcElement::ContainedInStructure() const { return data_->getInverse(Type::IfcRelContainedInSpatialStructure, 4)->as<IfcRelContainedInSpatialStructure>(); }

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

// Function implementations for IfcElementAssembly
bool IfcElementAssembly::hasAssemblyPlace() const { return !data_->getArgument(8)->isNull(); }
IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum IfcElementAssembly::AssemblyPlace() const { return IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); }
void IfcElementAssembly::setAssemblyPlace(IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcAssemblyPlaceEnum::ToString(v)); }
IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum IfcElementAssembly::PredefinedType() const { return IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); }
void IfcElementAssembly::setPredefinedType(IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcElementAssemblyTypeEnum::ToString(v)); }


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

// Function implementations for IfcElementComponent


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

// Function implementations for IfcElementComponentType


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

// Function implementations for IfcElementQuantity
bool IfcElementQuantity::hasMethodOfMeasurement() const { return !data_->getArgument(4)->isNull(); }
std::string IfcElementQuantity::MethodOfMeasurement() const { return *data_->getArgument(4); }
void IfcElementQuantity::setMethodOfMeasurement(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr IfcElementQuantity::Quantities() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcPhysicalQuantity>(); }
void IfcElementQuantity::setQuantities(IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


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

// Function implementations for IfcElementType
bool IfcElementType::hasElementType() const { return !data_->getArgument(8)->isNull(); }
std::string IfcElementType::ElementType() const { return *data_->getArgument(8); }
void IfcElementType::setElementType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


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

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


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

// Function implementations for IfcEllipse
double IfcEllipse::SemiAxis1() const { return *data_->getArgument(1); }
void IfcEllipse::setSemiAxis1(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcEllipse::SemiAxis2() const { return *data_->getArgument(2); }
void IfcEllipse::setSemiAxis2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


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

// Function implementations for IfcEllipseProfileDef
double IfcEllipseProfileDef::SemiAxis1() const { return *data_->getArgument(3); }
void IfcEllipseProfileDef::setSemiAxis1(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcEllipseProfileDef::SemiAxis2() const { return *data_->getArgument(4); }
void IfcEllipseProfileDef::setSemiAxis2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


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

// Function implementations for IfcEnergyConversionDevice


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

// Function implementations for IfcEnergyConversionDeviceType


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

// Function implementations for IfcEnergyProperties
bool IfcEnergyProperties::hasEnergySequence() const { return !data_->getArgument(4)->isNull(); }
IfcEnergySequenceEnum::IfcEnergySequenceEnum IfcEnergyProperties::EnergySequence() const { return IfcEnergySequenceEnum::FromString(*data_->getArgument(4)); }
void IfcEnergyProperties::setEnergySequence(IfcEnergySequenceEnum::IfcEnergySequenceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcEnergySequenceEnum::ToString(v)); }
bool IfcEnergyProperties::hasUserDefinedEnergySequence() const { return !data_->getArgument(5)->isNull(); }
std::string IfcEnergyProperties::UserDefinedEnergySequence() const { return *data_->getArgument(5); }
void IfcEnergyProperties::setUserDefinedEnergySequence(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


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

// Function implementations for IfcEnvironmentalImpactValue
std::string IfcEnvironmentalImpactValue::ImpactType() const { return *data_->getArgument(6); }
void IfcEnvironmentalImpactValue::setImpactType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategoryEnum IfcEnvironmentalImpactValue::Category() const { return IfcEnvironmentalImpactCategoryEnum::FromString(*data_->getArgument(7)); }
void IfcEnvironmentalImpactValue::setCategory(IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategoryEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcEnvironmentalImpactCategoryEnum::ToString(v)); }
bool IfcEnvironmentalImpactValue::hasUserDefinedCategory() const { return !data_->getArgument(8)->isNull(); }
std::string IfcEnvironmentalImpactValue::UserDefinedCategory() const { return *data_->getArgument(8); }
void IfcEnvironmentalImpactValue::setUserDefinedCategory(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcEnvironmentalImpactValue::declaration() const { return *IfcEnvironmentalImpactValue_type; }
Type::Enum IfcEnvironmentalImpactValue::Class() { return Type::IfcEnvironmentalImpactValue; }
IfcEnvironmentalImpactValue::IfcEnvironmentalImpactValue(IfcAbstractEntity* e) : IfcAppliedValue((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEnvironmentalImpactValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEnvironmentalImpactValue::IfcEnvironmentalImpactValue(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcAppliedValueSelect* v3_AppliedValue, IfcMeasureWithUnit* v4_UnitBasis, IfcDateTimeSelect* v5_ApplicableDate, IfcDateTimeSelect* v6_FixedUntilDate, std::string v7_ImpactType, IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategoryEnum v8_Category, boost::optional< std::string > v9_UserDefinedCategory) : IfcAppliedValue((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_AppliedValue)); e->setArgument(3,(v4_UnitBasis)); e->setArgument(4,(v5_ApplicableDate)); e->setArgument(5,(v6_FixedUntilDate)); e->setArgument(6,(v7_ImpactType)); e->setArgument(7,v8_Category,IfcEnvironmentalImpactCategoryEnum::ToString(v8_Category)); if (v9_UserDefinedCategory) { e->setArgument(8,(*v9_UserDefinedCategory)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEquipmentElement


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

// Function implementations for IfcEquipmentStandard


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

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


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

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


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

// Function implementations for IfcExtendedMaterialProperties
IfcTemplatedEntityList< IfcProperty >::ptr IfcExtendedMaterialProperties::ExtendedProperties() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcProperty>(); }
void IfcExtendedMaterialProperties::setExtendedProperties(IfcTemplatedEntityList< IfcProperty >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
bool IfcExtendedMaterialProperties::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcExtendedMaterialProperties::Description() const { return *data_->getArgument(2); }
void IfcExtendedMaterialProperties::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
std::string IfcExtendedMaterialProperties::Name() const { return *data_->getArgument(3); }
void IfcExtendedMaterialProperties::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcExtendedMaterialProperties::declaration() const { return *IfcExtendedMaterialProperties_type; }
Type::Enum IfcExtendedMaterialProperties::Class() { return Type::IfcExtendedMaterialProperties; }
IfcExtendedMaterialProperties::IfcExtendedMaterialProperties(IfcAbstractEntity* e) : IfcMaterialProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcExtendedMaterialProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExtendedMaterialProperties::IfcExtendedMaterialProperties(IfcMaterial* v1_Material, IfcTemplatedEntityList< IfcProperty >::ptr v2_ExtendedProperties, boost::optional< std::string > v3_Description, std::string v4_Name) : IfcMaterialProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); e->setArgument(1,(v2_ExtendedProperties)->generalize()); if (v3_Description) { e->setArgument(2,(*v3_Description)); } else { e->setArgument(2); } e->setArgument(3,(v4_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExternalReference
bool IfcExternalReference::hasLocation() const { return !data_->getArgument(0)->isNull(); }
std::string IfcExternalReference::Location() const { return *data_->getArgument(0); }
void IfcExternalReference::setLocation(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcExternalReference::hasItemReference() const { return !data_->getArgument(1)->isNull(); }
std::string IfcExternalReference::ItemReference() const { return *data_->getArgument(1); }
void IfcExternalReference::setItemReference(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcExternalReference::hasName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcExternalReference::Name() const { return *data_->getArgument(2); }
void IfcExternalReference::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


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

// Function implementations for IfcExternallyDefinedHatchStyle


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

// Function implementations for IfcExternallyDefinedSurfaceStyle


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

// Function implementations for IfcExternallyDefinedSymbol


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

// Function implementations for IfcExternallyDefinedTextFont


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

// Function implementations for IfcExtrudedAreaSolid
IfcDirection* IfcExtrudedAreaSolid::ExtrudedDirection() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcExtrudedAreaSolid::setExtrudedDirection(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcExtrudedAreaSolid::Depth() const { return *data_->getArgument(3); }
void IfcExtrudedAreaSolid::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcExtrudedAreaSolid::declaration() const { return *IfcExtrudedAreaSolid_type; }
Type::Enum IfcExtrudedAreaSolid::Class() { return Type::IfcExtrudedAreaSolid; }
IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(IfcAbstractEntity* e) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcExtrudedAreaSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(IfcProfileDef* v1_SweptArea, IfcAxis2Placement3D* v2_Position, IfcDirection* v3_ExtrudedDirection, double v4_Depth) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptArea)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_ExtrudedDirection)); e->setArgument(3,(v4_Depth)); data_ = e; EntityBuffer::Add(this); }

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


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

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


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

// Function implementations for IfcFaceBound
IfcLoop* IfcFaceBound::Bound() const { return (IfcLoop*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcFaceBound::setBound(IfcLoop* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcFaceBound::Orientation() const { return *data_->getArgument(1); }
void IfcFaceBound::setOrientation(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcFaceBound::declaration() const { return *IfcFaceBound_type; }
Type::Enum IfcFaceBound::Class() { return Type::IfcFaceBound; }
IfcFaceBound::IfcFaceBound(IfcAbstractEntity* e) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFaceBound)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFaceBound::IfcFaceBound(IfcLoop* v1_Bound, bool v2_Orientation) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Bound)); e->setArgument(1,(v2_Orientation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFaceOuterBound


const IfcParse::entity& IfcFaceOuterBound::declaration() const { return *IfcFaceOuterBound_type; }
Type::Enum IfcFaceOuterBound::Class() { return Type::IfcFaceOuterBound; }
IfcFaceOuterBound::IfcFaceOuterBound(IfcAbstractEntity* e) : IfcFaceBound((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFaceOuterBound)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFaceOuterBound::IfcFaceOuterBound(IfcLoop* v1_Bound, bool v2_Orientation) : IfcFaceBound((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Bound)); e->setArgument(1,(v2_Orientation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFaceSurface
IfcSurface* IfcFaceSurface::FaceSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcFaceSurface::setFaceSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcFaceSurface::SameSense() const { return *data_->getArgument(2); }
void IfcFaceSurface::setSameSense(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


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

// Function implementations for IfcFacetedBrep


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

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


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

// Function implementations for IfcFailureConnectionCondition
bool IfcFailureConnectionCondition::hasTensionFailureX() const { return !data_->getArgument(1)->isNull(); }
double IfcFailureConnectionCondition::TensionFailureX() const { return *data_->getArgument(1); }
void IfcFailureConnectionCondition::setTensionFailureX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcFailureConnectionCondition::hasTensionFailureY() const { return !data_->getArgument(2)->isNull(); }
double IfcFailureConnectionCondition::TensionFailureY() const { return *data_->getArgument(2); }
void IfcFailureConnectionCondition::setTensionFailureY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcFailureConnectionCondition::hasTensionFailureZ() const { return !data_->getArgument(3)->isNull(); }
double IfcFailureConnectionCondition::TensionFailureZ() const { return *data_->getArgument(3); }
void IfcFailureConnectionCondition::setTensionFailureZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcFailureConnectionCondition::hasCompressionFailureX() const { return !data_->getArgument(4)->isNull(); }
double IfcFailureConnectionCondition::CompressionFailureX() const { return *data_->getArgument(4); }
void IfcFailureConnectionCondition::setCompressionFailureX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcFailureConnectionCondition::hasCompressionFailureY() const { return !data_->getArgument(5)->isNull(); }
double IfcFailureConnectionCondition::CompressionFailureY() const { return *data_->getArgument(5); }
void IfcFailureConnectionCondition::setCompressionFailureY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcFailureConnectionCondition::hasCompressionFailureZ() const { return !data_->getArgument(6)->isNull(); }
double IfcFailureConnectionCondition::CompressionFailureZ() const { return *data_->getArgument(6); }
void IfcFailureConnectionCondition::setCompressionFailureZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcFailureConnectionCondition::declaration() const { return *IfcFailureConnectionCondition_type; }
Type::Enum IfcFailureConnectionCondition::Class() { return Type::IfcFailureConnectionCondition; }
IfcFailureConnectionCondition::IfcFailureConnectionCondition(IfcAbstractEntity* e) : IfcStructuralConnectionCondition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFailureConnectionCondition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFailureConnectionCondition::IfcFailureConnectionCondition(boost::optional< std::string > v1_Name, boost::optional< double > v2_TensionFailureX, boost::optional< double > v3_TensionFailureY, boost::optional< double > v4_TensionFailureZ, boost::optional< double > v5_CompressionFailureX, boost::optional< double > v6_CompressionFailureY, boost::optional< double > v7_CompressionFailureZ) : IfcStructuralConnectionCondition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_TensionFailureX) { e->setArgument(1,(*v2_TensionFailureX)); } else { e->setArgument(1); } if (v3_TensionFailureY) { e->setArgument(2,(*v3_TensionFailureY)); } else { e->setArgument(2); } if (v4_TensionFailureZ) { e->setArgument(3,(*v4_TensionFailureZ)); } else { e->setArgument(3); } if (v5_CompressionFailureX) { e->setArgument(4,(*v5_CompressionFailureX)); } else { e->setArgument(4); } if (v6_CompressionFailureY) { e->setArgument(5,(*v6_CompressionFailureY)); } else { e->setArgument(5); } if (v7_CompressionFailureZ) { e->setArgument(6,(*v7_CompressionFailureZ)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcFastener


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

// Function implementations for IfcFastenerType


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

// Function implementations for IfcFeatureElement


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

// Function implementations for IfcFeatureElementAddition

IfcRelProjectsElement::list::ptr IfcFeatureElementAddition::ProjectsElements() const { return data_->getInverse(Type::IfcRelProjectsElement, 5)->as<IfcRelProjectsElement>(); }

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

// Function implementations for IfcFeatureElementSubtraction

IfcRelVoidsElement::list::ptr IfcFeatureElementSubtraction::VoidsElements() const { return data_->getInverse(Type::IfcRelVoidsElement, 5)->as<IfcRelVoidsElement>(); }

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

// Function implementations for IfcFillAreaStyle
IfcEntityList::ptr IfcFillAreaStyle::FillStyles() const { return *data_->getArgument(1); }
void IfcFillAreaStyle::setFillStyles(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


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

// Function implementations for IfcFillAreaStyleHatching
IfcCurveStyle* IfcFillAreaStyleHatching::HatchLineAppearance() const { return (IfcCurveStyle*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcFillAreaStyleHatching::setHatchLineAppearance(IfcCurveStyle* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcHatchLineDistanceSelect* IfcFillAreaStyleHatching::StartOfNextHatchLine() const { return (IfcHatchLineDistanceSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcFillAreaStyleHatching::setStartOfNextHatchLine(IfcHatchLineDistanceSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcFillAreaStyleHatching::hasPointOfReferenceHatchLine() const { return !data_->getArgument(2)->isNull(); }
IfcCartesianPoint* IfcFillAreaStyleHatching::PointOfReferenceHatchLine() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcFillAreaStyleHatching::setPointOfReferenceHatchLine(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcFillAreaStyleHatching::hasPatternStart() const { return !data_->getArgument(3)->isNull(); }
IfcCartesianPoint* IfcFillAreaStyleHatching::PatternStart() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcFillAreaStyleHatching::setPatternStart(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcFillAreaStyleHatching::HatchLineAngle() const { return *data_->getArgument(4); }
void IfcFillAreaStyleHatching::setHatchLineAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcFillAreaStyleHatching::declaration() const { return *IfcFillAreaStyleHatching_type; }
Type::Enum IfcFillAreaStyleHatching::Class() { return Type::IfcFillAreaStyleHatching; }
IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFillAreaStyleHatching)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(IfcCurveStyle* v1_HatchLineAppearance, IfcHatchLineDistanceSelect* v2_StartOfNextHatchLine, IfcCartesianPoint* v3_PointOfReferenceHatchLine, IfcCartesianPoint* v4_PatternStart, double v5_HatchLineAngle) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_HatchLineAppearance)); e->setArgument(1,(v2_StartOfNextHatchLine)); e->setArgument(2,(v3_PointOfReferenceHatchLine)); e->setArgument(3,(v4_PatternStart)); e->setArgument(4,(v5_HatchLineAngle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFillAreaStyleTileSymbolWithStyle
IfcAnnotationSymbolOccurrence* IfcFillAreaStyleTileSymbolWithStyle::Symbol() const { return (IfcAnnotationSymbolOccurrence*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcFillAreaStyleTileSymbolWithStyle::setSymbol(IfcAnnotationSymbolOccurrence* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


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

// Function implementations for IfcFillAreaStyleTiles
IfcOneDirectionRepeatFactor* IfcFillAreaStyleTiles::TilingPattern() const { return (IfcOneDirectionRepeatFactor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcFillAreaStyleTiles::setTilingPattern(IfcOneDirectionRepeatFactor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcEntityList::ptr IfcFillAreaStyleTiles::Tiles() const { return *data_->getArgument(1); }
void IfcFillAreaStyleTiles::setTiles(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcFillAreaStyleTiles::TilingScale() const { return *data_->getArgument(2); }
void IfcFillAreaStyleTiles::setTilingScale(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcFillAreaStyleTiles::declaration() const { return *IfcFillAreaStyleTiles_type; }
Type::Enum IfcFillAreaStyleTiles::Class() { return Type::IfcFillAreaStyleTiles; }
IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFillAreaStyleTiles)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(IfcOneDirectionRepeatFactor* v1_TilingPattern, IfcEntityList::ptr v2_Tiles, double v3_TilingScale) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TilingPattern)); e->setArgument(1,(v2_Tiles)); e->setArgument(2,(v3_TilingScale)); data_ = e; EntityBuffer::Add(this); }

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


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

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


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

// Function implementations for IfcFlowController


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

// Function implementations for IfcFlowControllerType


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

// Function implementations for IfcFlowFitting


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

// Function implementations for IfcFlowFittingType


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

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


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

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


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

// Function implementations for IfcFlowMovingDevice


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

// Function implementations for IfcFlowMovingDeviceType


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

// Function implementations for IfcFlowSegment


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

// Function implementations for IfcFlowSegmentType


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

// Function implementations for IfcFlowStorageDevice


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

// Function implementations for IfcFlowStorageDeviceType


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

// Function implementations for IfcFlowTerminal


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

// Function implementations for IfcFlowTerminalType


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

// Function implementations for IfcFlowTreatmentDevice


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

// Function implementations for IfcFlowTreatmentDeviceType


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

// Function implementations for IfcFluidFlowProperties
IfcPropertySourceEnum::IfcPropertySourceEnum IfcFluidFlowProperties::PropertySource() const { return IfcPropertySourceEnum::FromString(*data_->getArgument(4)); }
void IfcFluidFlowProperties::setPropertySource(IfcPropertySourceEnum::IfcPropertySourceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcPropertySourceEnum::ToString(v)); }
bool IfcFluidFlowProperties::hasFlowConditionTimeSeries() const { return !data_->getArgument(5)->isNull(); }
IfcTimeSeries* IfcFluidFlowProperties::FlowConditionTimeSeries() const { return (IfcTimeSeries*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcFluidFlowProperties::setFlowConditionTimeSeries(IfcTimeSeries* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcFluidFlowProperties::hasVelocityTimeSeries() const { return !data_->getArgument(6)->isNull(); }
IfcTimeSeries* IfcFluidFlowProperties::VelocityTimeSeries() const { return (IfcTimeSeries*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcFluidFlowProperties::setVelocityTimeSeries(IfcTimeSeries* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcFluidFlowProperties::hasFlowrateTimeSeries() const { return !data_->getArgument(7)->isNull(); }
IfcTimeSeries* IfcFluidFlowProperties::FlowrateTimeSeries() const { return (IfcTimeSeries*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcFluidFlowProperties::setFlowrateTimeSeries(IfcTimeSeries* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcMaterial* IfcFluidFlowProperties::Fluid() const { return (IfcMaterial*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcFluidFlowProperties::setFluid(IfcMaterial* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcFluidFlowProperties::hasPressureTimeSeries() const { return !data_->getArgument(9)->isNull(); }
IfcTimeSeries* IfcFluidFlowProperties::PressureTimeSeries() const { return (IfcTimeSeries*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcFluidFlowProperties::setPressureTimeSeries(IfcTimeSeries* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcFluidFlowProperties::hasUserDefinedPropertySource() const { return !data_->getArgument(10)->isNull(); }
std::string IfcFluidFlowProperties::UserDefinedPropertySource() const { return *data_->getArgument(10); }
void IfcFluidFlowProperties::setUserDefinedPropertySource(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcFluidFlowProperties::hasTemperatureSingleValue() const { return !data_->getArgument(11)->isNull(); }
double IfcFluidFlowProperties::TemperatureSingleValue() const { return *data_->getArgument(11); }
void IfcFluidFlowProperties::setTemperatureSingleValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcFluidFlowProperties::hasWetBulbTemperatureSingleValue() const { return !data_->getArgument(12)->isNull(); }
double IfcFluidFlowProperties::WetBulbTemperatureSingleValue() const { return *data_->getArgument(12); }
void IfcFluidFlowProperties::setWetBulbTemperatureSingleValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcFluidFlowProperties::hasWetBulbTemperatureTimeSeries() const { return !data_->getArgument(13)->isNull(); }
IfcTimeSeries* IfcFluidFlowProperties::WetBulbTemperatureTimeSeries() const { return (IfcTimeSeries*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(13))); }
void IfcFluidFlowProperties::setWetBulbTemperatureTimeSeries(IfcTimeSeries* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcFluidFlowProperties::hasTemperatureTimeSeries() const { return !data_->getArgument(14)->isNull(); }
IfcTimeSeries* IfcFluidFlowProperties::TemperatureTimeSeries() const { return (IfcTimeSeries*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(14))); }
void IfcFluidFlowProperties::setTemperatureTimeSeries(IfcTimeSeries* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcFluidFlowProperties::hasFlowrateSingleValue() const { return !data_->getArgument(15)->isNull(); }
IfcDerivedMeasureValue* IfcFluidFlowProperties::FlowrateSingleValue() const { return (IfcDerivedMeasureValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(15))); }
void IfcFluidFlowProperties::setFlowrateSingleValue(IfcDerivedMeasureValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }
bool IfcFluidFlowProperties::hasFlowConditionSingleValue() const { return !data_->getArgument(16)->isNull(); }
double IfcFluidFlowProperties::FlowConditionSingleValue() const { return *data_->getArgument(16); }
void IfcFluidFlowProperties::setFlowConditionSingleValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v); }
bool IfcFluidFlowProperties::hasVelocitySingleValue() const { return !data_->getArgument(17)->isNull(); }
double IfcFluidFlowProperties::VelocitySingleValue() const { return *data_->getArgument(17); }
void IfcFluidFlowProperties::setVelocitySingleValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(17,v); }
bool IfcFluidFlowProperties::hasPressureSingleValue() const { return !data_->getArgument(18)->isNull(); }
double IfcFluidFlowProperties::PressureSingleValue() const { return *data_->getArgument(18); }
void IfcFluidFlowProperties::setPressureSingleValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(18,v); }


const IfcParse::entity& IfcFluidFlowProperties::declaration() const { return *IfcFluidFlowProperties_type; }
Type::Enum IfcFluidFlowProperties::Class() { return Type::IfcFluidFlowProperties; }
IfcFluidFlowProperties::IfcFluidFlowProperties(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFluidFlowProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFluidFlowProperties::IfcFluidFlowProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcPropertySourceEnum::IfcPropertySourceEnum v5_PropertySource, IfcTimeSeries* v6_FlowConditionTimeSeries, IfcTimeSeries* v7_VelocityTimeSeries, IfcTimeSeries* v8_FlowrateTimeSeries, IfcMaterial* v9_Fluid, IfcTimeSeries* v10_PressureTimeSeries, boost::optional< std::string > v11_UserDefinedPropertySource, boost::optional< double > v12_TemperatureSingleValue, boost::optional< double > v13_WetBulbTemperatureSingleValue, IfcTimeSeries* v14_WetBulbTemperatureTimeSeries, IfcTimeSeries* v15_TemperatureTimeSeries, IfcDerivedMeasureValue* v16_FlowrateSingleValue, boost::optional< double > v17_FlowConditionSingleValue, boost::optional< double > v18_VelocitySingleValue, boost::optional< double > v19_PressureSingleValue) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,v5_PropertySource,IfcPropertySourceEnum::ToString(v5_PropertySource)); e->setArgument(5,(v6_FlowConditionTimeSeries)); e->setArgument(6,(v7_VelocityTimeSeries)); e->setArgument(7,(v8_FlowrateTimeSeries)); e->setArgument(8,(v9_Fluid)); e->setArgument(9,(v10_PressureTimeSeries)); if (v11_UserDefinedPropertySource) { e->setArgument(10,(*v11_UserDefinedPropertySource)); } else { e->setArgument(10); } if (v12_TemperatureSingleValue) { e->setArgument(11,(*v12_TemperatureSingleValue)); } else { e->setArgument(11); } if (v13_WetBulbTemperatureSingleValue) { e->setArgument(12,(*v13_WetBulbTemperatureSingleValue)); } else { e->setArgument(12); } e->setArgument(13,(v14_WetBulbTemperatureTimeSeries)); e->setArgument(14,(v15_TemperatureTimeSeries)); e->setArgument(15,(v16_FlowrateSingleValue)); if (v17_FlowConditionSingleValue) { e->setArgument(16,(*v17_FlowConditionSingleValue)); } else { e->setArgument(16); } if (v18_VelocitySingleValue) { e->setArgument(17,(*v18_VelocitySingleValue)); } else { e->setArgument(17); } if (v19_PressureSingleValue) { e->setArgument(18,(*v19_PressureSingleValue)); } else { e->setArgument(18); } data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcFuelProperties
bool IfcFuelProperties::hasCombustionTemperature() const { return !data_->getArgument(1)->isNull(); }
double IfcFuelProperties::CombustionTemperature() const { return *data_->getArgument(1); }
void IfcFuelProperties::setCombustionTemperature(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcFuelProperties::hasCarbonContent() const { return !data_->getArgument(2)->isNull(); }
double IfcFuelProperties::CarbonContent() const { return *data_->getArgument(2); }
void IfcFuelProperties::setCarbonContent(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcFuelProperties::hasLowerHeatingValue() const { return !data_->getArgument(3)->isNull(); }
double IfcFuelProperties::LowerHeatingValue() const { return *data_->getArgument(3); }
void IfcFuelProperties::setLowerHeatingValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcFuelProperties::hasHigherHeatingValue() const { return !data_->getArgument(4)->isNull(); }
double IfcFuelProperties::HigherHeatingValue() const { return *data_->getArgument(4); }
void IfcFuelProperties::setHigherHeatingValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcFuelProperties::declaration() const { return *IfcFuelProperties_type; }
Type::Enum IfcFuelProperties::Class() { return Type::IfcFuelProperties; }
IfcFuelProperties::IfcFuelProperties(IfcAbstractEntity* e) : IfcMaterialProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFuelProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFuelProperties::IfcFuelProperties(IfcMaterial* v1_Material, boost::optional< double > v2_CombustionTemperature, boost::optional< double > v3_CarbonContent, boost::optional< double > v4_LowerHeatingValue, boost::optional< double > v5_HigherHeatingValue) : IfcMaterialProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); if (v2_CombustionTemperature) { e->setArgument(1,(*v2_CombustionTemperature)); } else { e->setArgument(1); } if (v3_CarbonContent) { e->setArgument(2,(*v3_CarbonContent)); } else { e->setArgument(2); } if (v4_LowerHeatingValue) { e->setArgument(3,(*v4_LowerHeatingValue)); } else { e->setArgument(3); } if (v5_HigherHeatingValue) { e->setArgument(4,(*v5_HigherHeatingValue)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFurnishingElement


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

// Function implementations for IfcFurnishingElementType


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

// Function implementations for IfcFurnitureStandard


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

// Function implementations for IfcFurnitureType
IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum IfcFurnitureType::AssemblyPlace() const { return IfcAssemblyPlaceEnum::FromString(*data_->getArgument(9)); }
void IfcFurnitureType::setAssemblyPlace(IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcAssemblyPlaceEnum::ToString(v)); }


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

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


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

// Function implementations for IfcGeneralMaterialProperties
bool IfcGeneralMaterialProperties::hasMolecularWeight() const { return !data_->getArgument(1)->isNull(); }
double IfcGeneralMaterialProperties::MolecularWeight() const { return *data_->getArgument(1); }
void IfcGeneralMaterialProperties::setMolecularWeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcGeneralMaterialProperties::hasPorosity() const { return !data_->getArgument(2)->isNull(); }
double IfcGeneralMaterialProperties::Porosity() const { return *data_->getArgument(2); }
void IfcGeneralMaterialProperties::setPorosity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcGeneralMaterialProperties::hasMassDensity() const { return !data_->getArgument(3)->isNull(); }
double IfcGeneralMaterialProperties::MassDensity() const { return *data_->getArgument(3); }
void IfcGeneralMaterialProperties::setMassDensity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcGeneralMaterialProperties::declaration() const { return *IfcGeneralMaterialProperties_type; }
Type::Enum IfcGeneralMaterialProperties::Class() { return Type::IfcGeneralMaterialProperties; }
IfcGeneralMaterialProperties::IfcGeneralMaterialProperties(IfcAbstractEntity* e) : IfcMaterialProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeneralMaterialProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeneralMaterialProperties::IfcGeneralMaterialProperties(IfcMaterial* v1_Material, boost::optional< double > v2_MolecularWeight, boost::optional< double > v3_Porosity, boost::optional< double > v4_MassDensity) : IfcMaterialProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); if (v2_MolecularWeight) { e->setArgument(1,(*v2_MolecularWeight)); } else { e->setArgument(1); } if (v3_Porosity) { e->setArgument(2,(*v3_Porosity)); } else { e->setArgument(2); } if (v4_MassDensity) { e->setArgument(3,(*v4_MassDensity)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeneralProfileProperties
bool IfcGeneralProfileProperties::hasPhysicalWeight() const { return !data_->getArgument(2)->isNull(); }
double IfcGeneralProfileProperties::PhysicalWeight() const { return *data_->getArgument(2); }
void IfcGeneralProfileProperties::setPhysicalWeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcGeneralProfileProperties::hasPerimeter() const { return !data_->getArgument(3)->isNull(); }
double IfcGeneralProfileProperties::Perimeter() const { return *data_->getArgument(3); }
void IfcGeneralProfileProperties::setPerimeter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcGeneralProfileProperties::hasMinimumPlateThickness() const { return !data_->getArgument(4)->isNull(); }
double IfcGeneralProfileProperties::MinimumPlateThickness() const { return *data_->getArgument(4); }
void IfcGeneralProfileProperties::setMinimumPlateThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcGeneralProfileProperties::hasMaximumPlateThickness() const { return !data_->getArgument(5)->isNull(); }
double IfcGeneralProfileProperties::MaximumPlateThickness() const { return *data_->getArgument(5); }
void IfcGeneralProfileProperties::setMaximumPlateThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcGeneralProfileProperties::hasCrossSectionArea() const { return !data_->getArgument(6)->isNull(); }
double IfcGeneralProfileProperties::CrossSectionArea() const { return *data_->getArgument(6); }
void IfcGeneralProfileProperties::setCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcGeneralProfileProperties::declaration() const { return *IfcGeneralProfileProperties_type; }
Type::Enum IfcGeneralProfileProperties::Class() { return Type::IfcGeneralProfileProperties; }
IfcGeneralProfileProperties::IfcGeneralProfileProperties(IfcAbstractEntity* e) : IfcProfileProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeneralProfileProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeneralProfileProperties::IfcGeneralProfileProperties(boost::optional< std::string > v1_ProfileName, IfcProfileDef* v2_ProfileDefinition, boost::optional< double > v3_PhysicalWeight, boost::optional< double > v4_Perimeter, boost::optional< double > v5_MinimumPlateThickness, boost::optional< double > v6_MaximumPlateThickness, boost::optional< double > v7_CrossSectionArea) : IfcProfileProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_ProfileName) { e->setArgument(0,(*v1_ProfileName)); } else { e->setArgument(0); } e->setArgument(1,(v2_ProfileDefinition)); if (v3_PhysicalWeight) { e->setArgument(2,(*v3_PhysicalWeight)); } else { e->setArgument(2); } if (v4_Perimeter) { e->setArgument(3,(*v4_Perimeter)); } else { e->setArgument(3); } if (v5_MinimumPlateThickness) { e->setArgument(4,(*v5_MinimumPlateThickness)); } else { e->setArgument(4); } if (v6_MaximumPlateThickness) { e->setArgument(5,(*v6_MaximumPlateThickness)); } else { e->setArgument(5); } if (v7_CrossSectionArea) { e->setArgument(6,(*v7_CrossSectionArea)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeometricCurveSet


const IfcParse::entity& IfcGeometricCurveSet::declaration() const { return *IfcGeometricCurveSet_type; }
Type::Enum IfcGeometricCurveSet::Class() { return Type::IfcGeometricCurveSet; }
IfcGeometricCurveSet::IfcGeometricCurveSet(IfcAbstractEntity* e) : IfcGeometricSet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeometricCurveSet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeometricCurveSet::IfcGeometricCurveSet(IfcEntityList::ptr v1_Elements) : IfcGeometricSet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Elements)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeometricRepresentationContext
int IfcGeometricRepresentationContext::CoordinateSpaceDimension() const { return *data_->getArgument(2); }
void IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcGeometricRepresentationContext::hasPrecision() const { return !data_->getArgument(3)->isNull(); }
double IfcGeometricRepresentationContext::Precision() const { return *data_->getArgument(3); }
void IfcGeometricRepresentationContext::setPrecision(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
IfcAxis2Placement* IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcGeometricRepresentationContext::setWorldCoordinateSystem(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcGeometricRepresentationContext::hasTrueNorth() const { return !data_->getArgument(5)->isNull(); }
IfcDirection* IfcGeometricRepresentationContext::TrueNorth() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcGeometricRepresentationContext::setTrueNorth(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }

IfcGeometricRepresentationSubContext::list::ptr IfcGeometricRepresentationContext::HasSubContexts() const { return data_->getInverse(Type::IfcGeometricRepresentationSubContext, 6)->as<IfcGeometricRepresentationSubContext>(); }

const IfcParse::entity& IfcGeometricRepresentationContext::declaration() const { return *IfcGeometricRepresentationContext_type; }
Type::Enum IfcGeometricRepresentationContext::Class() { return Type::IfcGeometricRepresentationContext; }
IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(IfcAbstractEntity* e) : IfcRepresentationContext((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeometricRepresentationContext)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, int v3_CoordinateSpaceDimension, boost::optional< double > v4_Precision, IfcAxis2Placement* v5_WorldCoordinateSystem, IfcDirection* v6_TrueNorth) : IfcRepresentationContext((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_ContextIdentifier) { e->setArgument(0,(*v1_ContextIdentifier)); } else { e->setArgument(0); } if (v2_ContextType) { e->setArgument(1,(*v2_ContextType)); } else { e->setArgument(1); } e->setArgument(2,(v3_CoordinateSpaceDimension)); if (v4_Precision) { e->setArgument(3,(*v4_Precision)); } else { e->setArgument(3); } e->setArgument(4,(v5_WorldCoordinateSystem)); e->setArgument(5,(v6_TrueNorth)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeometricRepresentationItem


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

// Function implementations for IfcGeometricRepresentationSubContext
IfcGeometricRepresentationContext* IfcGeometricRepresentationSubContext::ParentContext() const { return (IfcGeometricRepresentationContext*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcGeometricRepresentationSubContext::setParentContext(IfcGeometricRepresentationContext* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcGeometricRepresentationSubContext::hasTargetScale() const { return !data_->getArgument(7)->isNull(); }
double IfcGeometricRepresentationSubContext::TargetScale() const { return *data_->getArgument(7); }
void IfcGeometricRepresentationSubContext::setTargetScale(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcGeometricProjectionEnum::IfcGeometricProjectionEnum IfcGeometricRepresentationSubContext::TargetView() const { return IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); }
void IfcGeometricRepresentationSubContext::setTargetView(IfcGeometricProjectionEnum::IfcGeometricProjectionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcGeometricProjectionEnum::ToString(v)); }
bool IfcGeometricRepresentationSubContext::hasUserDefinedTargetView() const { return !data_->getArgument(9)->isNull(); }
std::string IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { return *data_->getArgument(9); }
void IfcGeometricRepresentationSubContext::setUserDefinedTargetView(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcGeometricRepresentationSubContext::declaration() const { return *IfcGeometricRepresentationSubContext_type; }
Type::Enum IfcGeometricRepresentationSubContext::Class() { return Type::IfcGeometricRepresentationSubContext; }
IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(IfcAbstractEntity* e) : IfcGeometricRepresentationContext((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeometricRepresentationSubContext)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, IfcGeometricRepresentationContext* v7_ParentContext, boost::optional< double > v8_TargetScale, IfcGeometricProjectionEnum::IfcGeometricProjectionEnum v9_TargetView, boost::optional< std::string > v10_UserDefinedTargetView) : IfcGeometricRepresentationContext((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_ContextIdentifier) { e->setArgument(0,(*v1_ContextIdentifier)); } else { e->setArgument(0); } if (v2_ContextType) { e->setArgument(1,(*v2_ContextType)); } else { e->setArgument(1); } e->setArgumentDerived(2); e->setArgumentDerived(3); e->setArgumentDerived(4); e->setArgumentDerived(5); e->setArgument(6,(v7_ParentContext)); if (v8_TargetScale) { e->setArgument(7,(*v8_TargetScale)); } else { e->setArgument(7); } e->setArgument(8,v9_TargetView,IfcGeometricProjectionEnum::ToString(v9_TargetView)); if (v10_UserDefinedTargetView) { e->setArgument(9,(*v10_UserDefinedTargetView)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeometricSet
IfcEntityList::ptr IfcGeometricSet::Elements() const { return *data_->getArgument(0); }
void IfcGeometricSet::setElements(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


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

// Function implementations for IfcGrid
IfcTemplatedEntityList< IfcGridAxis >::ptr IfcGrid::UAxes() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcGridAxis>(); }
void IfcGrid::setUAxes(IfcTemplatedEntityList< IfcGridAxis >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
IfcTemplatedEntityList< IfcGridAxis >::ptr IfcGrid::VAxes() const { IfcEntityList::ptr es = *data_->getArgument(8); return es->as<IfcGridAxis>(); }
void IfcGrid::setVAxes(IfcTemplatedEntityList< IfcGridAxis >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v->generalize()); }
bool IfcGrid::hasWAxes() const { return !data_->getArgument(9)->isNull(); }
IfcTemplatedEntityList< IfcGridAxis >::ptr IfcGrid::WAxes() const { IfcEntityList::ptr es = *data_->getArgument(9); return es->as<IfcGridAxis>(); }
void IfcGrid::setWAxes(IfcTemplatedEntityList< IfcGridAxis >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v->generalize()); }

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

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

// Function implementations for IfcGridAxis
bool IfcGridAxis::hasAxisTag() const { return !data_->getArgument(0)->isNull(); }
std::string IfcGridAxis::AxisTag() const { return *data_->getArgument(0); }
void IfcGridAxis::setAxisTag(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcCurve* IfcGridAxis::AxisCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcGridAxis::setAxisCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcGridAxis::SameSense() const { return *data_->getArgument(2); }
void IfcGridAxis::setSameSense(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }

IfcGrid::list::ptr IfcGridAxis::PartOfW() const { return data_->getInverse(Type::IfcGrid, 9)->as<IfcGrid>(); }
IfcGrid::list::ptr IfcGridAxis::PartOfV() const { return data_->getInverse(Type::IfcGrid, 8)->as<IfcGrid>(); }
IfcGrid::list::ptr IfcGridAxis::PartOfU() const { return data_->getInverse(Type::IfcGrid, 7)->as<IfcGrid>(); }
IfcVirtualGridIntersection::list::ptr IfcGridAxis::HasIntersections() const { return data_->getInverse(Type::IfcVirtualGridIntersection, 0)->as<IfcVirtualGridIntersection>(); }

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

// Function implementations for IfcGridPlacement
IfcVirtualGridIntersection* IfcGridPlacement::PlacementLocation() const { return (IfcVirtualGridIntersection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcGridPlacement::setPlacementLocation(IfcVirtualGridIntersection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcGridPlacement::hasPlacementRefDirection() const { return !data_->getArgument(1)->isNull(); }
IfcVirtualGridIntersection* IfcGridPlacement::PlacementRefDirection() const { return (IfcVirtualGridIntersection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcGridPlacement::setPlacementRefDirection(IfcVirtualGridIntersection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcGridPlacement::declaration() const { return *IfcGridPlacement_type; }
Type::Enum IfcGridPlacement::Class() { return Type::IfcGridPlacement; }
IfcGridPlacement::IfcGridPlacement(IfcAbstractEntity* e) : IfcObjectPlacement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGridPlacement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGridPlacement::IfcGridPlacement(IfcVirtualGridIntersection* v1_PlacementLocation, IfcVirtualGridIntersection* v2_PlacementRefDirection) : IfcObjectPlacement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_PlacementLocation)); e->setArgument(1,(v2_PlacementRefDirection)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGroup

IfcRelAssignsToGroup::list::ptr IfcGroup::IsGroupedBy() const { return data_->getInverse(Type::IfcRelAssignsToGroup, 6)->as<IfcRelAssignsToGroup>(); }

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

// Function implementations for IfcHalfSpaceSolid
IfcSurface* IfcHalfSpaceSolid::BaseSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcHalfSpaceSolid::setBaseSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcHalfSpaceSolid::AgreementFlag() const { return *data_->getArgument(1); }
void IfcHalfSpaceSolid::setAgreementFlag(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


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

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


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

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


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

// Function implementations for IfcHygroscopicMaterialProperties
bool IfcHygroscopicMaterialProperties::hasUpperVaporResistanceFactor() const { return !data_->getArgument(1)->isNull(); }
double IfcHygroscopicMaterialProperties::UpperVaporResistanceFactor() const { return *data_->getArgument(1); }
void IfcHygroscopicMaterialProperties::setUpperVaporResistanceFactor(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcHygroscopicMaterialProperties::hasLowerVaporResistanceFactor() const { return !data_->getArgument(2)->isNull(); }
double IfcHygroscopicMaterialProperties::LowerVaporResistanceFactor() const { return *data_->getArgument(2); }
void IfcHygroscopicMaterialProperties::setLowerVaporResistanceFactor(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcHygroscopicMaterialProperties::hasIsothermalMoistureCapacity() const { return !data_->getArgument(3)->isNull(); }
double IfcHygroscopicMaterialProperties::IsothermalMoistureCapacity() const { return *data_->getArgument(3); }
void IfcHygroscopicMaterialProperties::setIsothermalMoistureCapacity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcHygroscopicMaterialProperties::hasVaporPermeability() const { return !data_->getArgument(4)->isNull(); }
double IfcHygroscopicMaterialProperties::VaporPermeability() const { return *data_->getArgument(4); }
void IfcHygroscopicMaterialProperties::setVaporPermeability(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcHygroscopicMaterialProperties::hasMoistureDiffusivity() const { return !data_->getArgument(5)->isNull(); }
double IfcHygroscopicMaterialProperties::MoistureDiffusivity() const { return *data_->getArgument(5); }
void IfcHygroscopicMaterialProperties::setMoistureDiffusivity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcHygroscopicMaterialProperties::declaration() const { return *IfcHygroscopicMaterialProperties_type; }
Type::Enum IfcHygroscopicMaterialProperties::Class() { return Type::IfcHygroscopicMaterialProperties; }
IfcHygroscopicMaterialProperties::IfcHygroscopicMaterialProperties(IfcAbstractEntity* e) : IfcMaterialProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcHygroscopicMaterialProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcHygroscopicMaterialProperties::IfcHygroscopicMaterialProperties(IfcMaterial* v1_Material, boost::optional< double > v2_UpperVaporResistanceFactor, boost::optional< double > v3_LowerVaporResistanceFactor, boost::optional< double > v4_IsothermalMoistureCapacity, boost::optional< double > v5_VaporPermeability, boost::optional< double > v6_MoistureDiffusivity) : IfcMaterialProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); if (v2_UpperVaporResistanceFactor) { e->setArgument(1,(*v2_UpperVaporResistanceFactor)); } else { e->setArgument(1); } if (v3_LowerVaporResistanceFactor) { e->setArgument(2,(*v3_LowerVaporResistanceFactor)); } else { e->setArgument(2); } if (v4_IsothermalMoistureCapacity) { e->setArgument(3,(*v4_IsothermalMoistureCapacity)); } else { e->setArgument(3); } if (v5_VaporPermeability) { e->setArgument(4,(*v5_VaporPermeability)); } else { e->setArgument(4); } if (v6_MoistureDiffusivity) { e->setArgument(5,(*v6_MoistureDiffusivity)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIShapeProfileDef
double IfcIShapeProfileDef::OverallWidth() const { return *data_->getArgument(3); }
void IfcIShapeProfileDef::setOverallWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcIShapeProfileDef::OverallDepth() const { return *data_->getArgument(4); }
void IfcIShapeProfileDef::setOverallDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcIShapeProfileDef::WebThickness() const { return *data_->getArgument(5); }
void IfcIShapeProfileDef::setWebThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcIShapeProfileDef::FlangeThickness() const { return *data_->getArgument(6); }
void IfcIShapeProfileDef::setFlangeThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcIShapeProfileDef::hasFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcIShapeProfileDef::FilletRadius() const { return *data_->getArgument(7); }
void IfcIShapeProfileDef::setFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


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

// Function implementations for IfcImageTexture
std::string IfcImageTexture::UrlReference() const { return *data_->getArgument(4); }
void IfcImageTexture::setUrlReference(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcImageTexture::declaration() const { return *IfcImageTexture_type; }
Type::Enum IfcImageTexture::Class() { return Type::IfcImageTexture; }
IfcImageTexture::IfcImageTexture(IfcAbstractEntity* e) : IfcSurfaceTexture((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcImageTexture)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcImageTexture::IfcImageTexture(bool v1_RepeatS, bool v2_RepeatT, IfcSurfaceTextureEnum::IfcSurfaceTextureEnum v3_TextureType, IfcCartesianTransformationOperator2D* v4_TextureTransform, std::string v5_UrlReference) : IfcSurfaceTexture((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RepeatS)); e->setArgument(1,(v2_RepeatT)); e->setArgument(2,v3_TextureType,IfcSurfaceTextureEnum::ToString(v3_TextureType)); e->setArgument(3,(v4_TextureTransform)); e->setArgument(4,(v5_UrlReference)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcInventory
IfcInventoryTypeEnum::IfcInventoryTypeEnum IfcInventory::InventoryType() const { return IfcInventoryTypeEnum::FromString(*data_->getArgument(5)); }
void IfcInventory::setInventoryType(IfcInventoryTypeEnum::IfcInventoryTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcInventoryTypeEnum::ToString(v)); }
IfcActorSelect* IfcInventory::Jurisdiction() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcInventory::setJurisdiction(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcTemplatedEntityList< IfcPerson >::ptr IfcInventory::ResponsiblePersons() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcPerson>(); }
void IfcInventory::setResponsiblePersons(IfcTemplatedEntityList< IfcPerson >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
IfcCalendarDate* IfcInventory::LastUpdateDate() const { return (IfcCalendarDate*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcInventory::setLastUpdateDate(IfcCalendarDate* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcInventory::hasCurrentValue() const { return !data_->getArgument(9)->isNull(); }
IfcCostValue* IfcInventory::CurrentValue() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcInventory::setCurrentValue(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcInventory::hasOriginalValue() const { return !data_->getArgument(10)->isNull(); }
IfcCostValue* IfcInventory::OriginalValue() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcInventory::setOriginalValue(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcInventory::declaration() const { return *IfcInventory_type; }
Type::Enum IfcInventory::Class() { return Type::IfcInventory; }
IfcInventory::IfcInventory(IfcAbstractEntity* e) : IfcGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcInventory)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcInventory::IfcInventory(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcInventoryTypeEnum::IfcInventoryTypeEnum v6_InventoryType, IfcActorSelect* v7_Jurisdiction, IfcTemplatedEntityList< IfcPerson >::ptr v8_ResponsiblePersons, IfcCalendarDate* v9_LastUpdateDate, IfcCostValue* v10_CurrentValue, IfcCostValue* v11_OriginalValue) : IfcGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,v6_InventoryType,IfcInventoryTypeEnum::ToString(v6_InventoryType)); e->setArgument(6,(v7_Jurisdiction)); e->setArgument(7,(v8_ResponsiblePersons)->generalize()); e->setArgument(8,(v9_LastUpdateDate)); e->setArgument(9,(v10_CurrentValue)); e->setArgument(10,(v11_OriginalValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIrregularTimeSeries
IfcTemplatedEntityList< IfcIrregularTimeSeriesValue >::ptr IfcIrregularTimeSeries::Values() const { IfcEntityList::ptr es = *data_->getArgument(8); return es->as<IfcIrregularTimeSeriesValue>(); }
void IfcIrregularTimeSeries::setValues(IfcTemplatedEntityList< IfcIrregularTimeSeriesValue >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v->generalize()); }


const IfcParse::entity& IfcIrregularTimeSeries::declaration() const { return *IfcIrregularTimeSeries_type; }
Type::Enum IfcIrregularTimeSeries::Class() { return Type::IfcIrregularTimeSeries; }
IfcIrregularTimeSeries::IfcIrregularTimeSeries(IfcAbstractEntity* e) : IfcTimeSeries((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcIrregularTimeSeries)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIrregularTimeSeries::IfcIrregularTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, IfcDateTimeSelect* v3_StartTime, IfcDateTimeSelect* v4_EndTime, IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum v5_TimeSeriesDataType, IfcDataOriginEnum::IfcDataOriginEnum v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, IfcUnit* v8_Unit, IfcTemplatedEntityList< IfcIrregularTimeSeriesValue >::ptr v9_Values) : IfcTimeSeries((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_StartTime)); e->setArgument(3,(v4_EndTime)); e->setArgument(4,v5_TimeSeriesDataType,IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType)); e->setArgument(5,v6_DataOrigin,IfcDataOriginEnum::ToString(v6_DataOrigin)); if (v7_UserDefinedDataOrigin) { e->setArgument(6,(*v7_UserDefinedDataOrigin)); } else { e->setArgument(6); } e->setArgument(7,(v8_Unit)); e->setArgument(8,(v9_Values)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIrregularTimeSeriesValue
IfcDateTimeSelect* IfcIrregularTimeSeriesValue::TimeStamp() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcIrregularTimeSeriesValue::setTimeStamp(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcEntityList::ptr IfcIrregularTimeSeriesValue::ListValues() const { return *data_->getArgument(1); }
void IfcIrregularTimeSeriesValue::setListValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcIrregularTimeSeriesValue::declaration() const { return *IfcIrregularTimeSeriesValue_type; }
Type::Enum IfcIrregularTimeSeriesValue::Class() { return Type::IfcIrregularTimeSeriesValue; }
IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcIrregularTimeSeriesValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(IfcDateTimeSelect* v1_TimeStamp, IfcEntityList::ptr v2_ListValues) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TimeStamp)); e->setArgument(1,(v2_ListValues)); data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcLShapeProfileDef
double IfcLShapeProfileDef::Depth() const { return *data_->getArgument(3); }
void IfcLShapeProfileDef::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcLShapeProfileDef::hasWidth() const { return !data_->getArgument(4)->isNull(); }
double IfcLShapeProfileDef::Width() const { return *data_->getArgument(4); }
void IfcLShapeProfileDef::setWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcLShapeProfileDef::Thickness() const { return *data_->getArgument(5); }
void IfcLShapeProfileDef::setThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcLShapeProfileDef::hasFilletRadius() const { return !data_->getArgument(6)->isNull(); }
double IfcLShapeProfileDef::FilletRadius() const { return *data_->getArgument(6); }
void IfcLShapeProfileDef::setFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcLShapeProfileDef::hasEdgeRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcLShapeProfileDef::EdgeRadius() const { return *data_->getArgument(7); }
void IfcLShapeProfileDef::setEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcLShapeProfileDef::hasLegSlope() const { return !data_->getArgument(8)->isNull(); }
double IfcLShapeProfileDef::LegSlope() const { return *data_->getArgument(8); }
void IfcLShapeProfileDef::setLegSlope(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcLShapeProfileDef::hasCentreOfGravityInX() const { return !data_->getArgument(9)->isNull(); }
double IfcLShapeProfileDef::CentreOfGravityInX() const { return *data_->getArgument(9); }
void IfcLShapeProfileDef::setCentreOfGravityInX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcLShapeProfileDef::hasCentreOfGravityInY() const { return !data_->getArgument(10)->isNull(); }
double IfcLShapeProfileDef::CentreOfGravityInY() const { return *data_->getArgument(10); }
void IfcLShapeProfileDef::setCentreOfGravityInY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


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

// Function implementations for IfcLaborResource
bool IfcLaborResource::hasSkillSet() const { return !data_->getArgument(9)->isNull(); }
std::string IfcLaborResource::SkillSet() const { return *data_->getArgument(9); }
void IfcLaborResource::setSkillSet(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcLaborResource::declaration() const { return *IfcLaborResource_type; }
Type::Enum IfcLaborResource::Class() { return Type::IfcLaborResource; }
IfcLaborResource::IfcLaborResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLaborResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLaborResource::IfcLaborResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_ResourceIdentifier, boost::optional< std::string > v7_ResourceGroup, boost::optional< IfcResourceConsumptionEnum::IfcResourceConsumptionEnum > v8_ResourceConsumption, IfcMeasureWithUnit* v9_BaseQuantity, boost::optional< std::string > v10_SkillSet) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_ResourceIdentifier) { e->setArgument(5,(*v6_ResourceIdentifier)); } else { e->setArgument(5); } if (v7_ResourceGroup) { e->setArgument(6,(*v7_ResourceGroup)); } else { e->setArgument(6); } if (v8_ResourceConsumption) { e->setArgument(7,*v8_ResourceConsumption,IfcResourceConsumptionEnum::ToString(*v8_ResourceConsumption)); } else { e->setArgument(7); } e->setArgument(8,(v9_BaseQuantity)); if (v10_SkillSet) { e->setArgument(9,(*v10_SkillSet)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcLibraryInformation
std::string IfcLibraryInformation::Name() const { return *data_->getArgument(0); }
void IfcLibraryInformation::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcLibraryInformation::hasVersion() const { return !data_->getArgument(1)->isNull(); }
std::string IfcLibraryInformation::Version() const { return *data_->getArgument(1); }
void IfcLibraryInformation::setVersion(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcLibraryInformation::hasPublisher() const { return !data_->getArgument(2)->isNull(); }
IfcOrganization* IfcLibraryInformation::Publisher() const { return (IfcOrganization*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcLibraryInformation::setPublisher(IfcOrganization* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcLibraryInformation::hasVersionDate() const { return !data_->getArgument(3)->isNull(); }
IfcCalendarDate* IfcLibraryInformation::VersionDate() const { return (IfcCalendarDate*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcLibraryInformation::setVersionDate(IfcCalendarDate* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcLibraryInformation::hasLibraryReference() const { return !data_->getArgument(4)->isNull(); }
IfcTemplatedEntityList< IfcLibraryReference >::ptr IfcLibraryInformation::LibraryReference() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcLibraryReference>(); }
void IfcLibraryInformation::setLibraryReference(IfcTemplatedEntityList< IfcLibraryReference >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }


const IfcParse::entity& IfcLibraryInformation::declaration() const { return *IfcLibraryInformation_type; }
Type::Enum IfcLibraryInformation::Class() { return Type::IfcLibraryInformation; }
IfcLibraryInformation::IfcLibraryInformation(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcLibraryInformation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, boost::optional< std::string > v2_Version, IfcOrganization* v3_Publisher, IfcCalendarDate* v4_VersionDate, boost::optional< IfcTemplatedEntityList< IfcLibraryReference >::ptr > v5_LibraryReference) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Version) { e->setArgument(1,(*v2_Version)); } else { e->setArgument(1); } e->setArgument(2,(v3_Publisher)); e->setArgument(3,(v4_VersionDate)); if (v5_LibraryReference) { e->setArgument(4,(*v5_LibraryReference)->generalize()); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLibraryReference

IfcLibraryInformation::list::ptr IfcLibraryReference::ReferenceIntoLibrary() const { return data_->getInverse(Type::IfcLibraryInformation, 4)->as<IfcLibraryInformation>(); }

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

// Function implementations for IfcLightDistributionData
double IfcLightDistributionData::MainPlaneAngle() const { return *data_->getArgument(0); }
void IfcLightDistributionData::setMainPlaneAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
std::vector< double > /*[1:?]*/ IfcLightDistributionData::SecondaryPlaneAngle() const { return *data_->getArgument(1); }
void IfcLightDistributionData::setSecondaryPlaneAngle(std::vector< double > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
std::vector< double > /*[1:?]*/ IfcLightDistributionData::LuminousIntensity() const { return *data_->getArgument(2); }
void IfcLightDistributionData::setLuminousIntensity(std::vector< double > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcLightDistributionData::declaration() const { return *IfcLightDistributionData_type; }
Type::Enum IfcLightDistributionData::Class() { return Type::IfcLightDistributionData; }
IfcLightDistributionData::IfcLightDistributionData(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcLightDistributionData)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightDistributionData::IfcLightDistributionData(double v1_MainPlaneAngle, std::vector< double > /*[1:?]*/ v2_SecondaryPlaneAngle, std::vector< double > /*[1:?]*/ v3_LuminousIntensity) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_MainPlaneAngle)); e->setArgument(1,(v2_SecondaryPlaneAngle)); e->setArgument(2,(v3_LuminousIntensity)); data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcLightIntensityDistribution
IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum IfcLightIntensityDistribution::LightDistributionCurve() const { return IfcLightDistributionCurveEnum::FromString(*data_->getArgument(0)); }
void IfcLightIntensityDistribution::setLightDistributionCurve(IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcLightDistributionCurveEnum::ToString(v)); }
IfcTemplatedEntityList< IfcLightDistributionData >::ptr IfcLightIntensityDistribution::DistributionData() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcLightDistributionData>(); }
void IfcLightIntensityDistribution::setDistributionData(IfcTemplatedEntityList< IfcLightDistributionData >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }


const IfcParse::entity& IfcLightIntensityDistribution::declaration() const { return *IfcLightIntensityDistribution_type; }
Type::Enum IfcLightIntensityDistribution::Class() { return Type::IfcLightIntensityDistribution; }
IfcLightIntensityDistribution::IfcLightIntensityDistribution(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcLightIntensityDistribution)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightIntensityDistribution::IfcLightIntensityDistribution(IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum v1_LightDistributionCurve, IfcTemplatedEntityList< IfcLightDistributionData >::ptr v2_DistributionData) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_LightDistributionCurve,IfcLightDistributionCurveEnum::ToString(v1_LightDistributionCurve)); e->setArgument(1,(v2_DistributionData)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightSource
bool IfcLightSource::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcLightSource::Name() const { return *data_->getArgument(0); }
void IfcLightSource::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcColourRgb* IfcLightSource::LightColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcLightSource::setLightColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcLightSource::hasAmbientIntensity() const { return !data_->getArgument(2)->isNull(); }
double IfcLightSource::AmbientIntensity() const { return *data_->getArgument(2); }
void IfcLightSource::setAmbientIntensity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcLightSource::hasIntensity() const { return !data_->getArgument(3)->isNull(); }
double IfcLightSource::Intensity() const { return *data_->getArgument(3); }
void IfcLightSource::setIntensity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


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

// Function implementations for IfcLightSourceAmbient


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

// Function implementations for IfcLightSourceDirectional
IfcDirection* IfcLightSourceDirectional::Orientation() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcLightSourceDirectional::setOrientation(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcLightSourceDirectional::declaration() const { return *IfcLightSourceDirectional_type; }
Type::Enum IfcLightSourceDirectional::Class() { return Type::IfcLightSourceDirectional; }
IfcLightSourceDirectional::IfcLightSourceDirectional(IfcAbstractEntity* e) : IfcLightSource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightSourceDirectional)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightSourceDirectional::IfcLightSourceDirectional(boost::optional< std::string > v1_Name, IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, IfcDirection* v5_Orientation) : IfcLightSource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_LightColour)); if (v3_AmbientIntensity) { e->setArgument(2,(*v3_AmbientIntensity)); } else { e->setArgument(2); } if (v4_Intensity) { e->setArgument(3,(*v4_Intensity)); } else { e->setArgument(3); } e->setArgument(4,(v5_Orientation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightSourceGoniometric
IfcAxis2Placement3D* IfcLightSourceGoniometric::Position() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcLightSourceGoniometric::setPosition(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcLightSourceGoniometric::hasColourAppearance() const { return !data_->getArgument(5)->isNull(); }
IfcColourRgb* IfcLightSourceGoniometric::ColourAppearance() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcLightSourceGoniometric::setColourAppearance(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcLightSourceGoniometric::ColourTemperature() const { return *data_->getArgument(6); }
void IfcLightSourceGoniometric::setColourTemperature(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
double IfcLightSourceGoniometric::LuminousFlux() const { return *data_->getArgument(7); }
void IfcLightSourceGoniometric::setLuminousFlux(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum IfcLightSourceGoniometric::LightEmissionSource() const { return IfcLightEmissionSourceEnum::FromString(*data_->getArgument(8)); }
void IfcLightSourceGoniometric::setLightEmissionSource(IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcLightEmissionSourceEnum::ToString(v)); }
IfcLightDistributionDataSourceSelect* IfcLightSourceGoniometric::LightDistributionDataSource() const { return (IfcLightDistributionDataSourceSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcLightSourceGoniometric::setLightDistributionDataSource(IfcLightDistributionDataSourceSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcLightSourceGoniometric::declaration() const { return *IfcLightSourceGoniometric_type; }
Type::Enum IfcLightSourceGoniometric::Class() { return Type::IfcLightSourceGoniometric; }
IfcLightSourceGoniometric::IfcLightSourceGoniometric(IfcAbstractEntity* e) : IfcLightSource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightSourceGoniometric)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightSourceGoniometric::IfcLightSourceGoniometric(boost::optional< std::string > v1_Name, IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, IfcAxis2Placement3D* v5_Position, IfcColourRgb* v6_ColourAppearance, double v7_ColourTemperature, double v8_LuminousFlux, IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum v9_LightEmissionSource, IfcLightDistributionDataSourceSelect* v10_LightDistributionDataSource) : IfcLightSource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_LightColour)); if (v3_AmbientIntensity) { e->setArgument(2,(*v3_AmbientIntensity)); } else { e->setArgument(2); } if (v4_Intensity) { e->setArgument(3,(*v4_Intensity)); } else { e->setArgument(3); } e->setArgument(4,(v5_Position)); e->setArgument(5,(v6_ColourAppearance)); e->setArgument(6,(v7_ColourTemperature)); e->setArgument(7,(v8_LuminousFlux)); e->setArgument(8,v9_LightEmissionSource,IfcLightEmissionSourceEnum::ToString(v9_LightEmissionSource)); e->setArgument(9,(v10_LightDistributionDataSource)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightSourcePositional
IfcCartesianPoint* IfcLightSourcePositional::Position() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcLightSourcePositional::setPosition(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcLightSourcePositional::Radius() const { return *data_->getArgument(5); }
void IfcLightSourcePositional::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcLightSourcePositional::ConstantAttenuation() const { return *data_->getArgument(6); }
void IfcLightSourcePositional::setConstantAttenuation(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
double IfcLightSourcePositional::DistanceAttenuation() const { return *data_->getArgument(7); }
void IfcLightSourcePositional::setDistanceAttenuation(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
double IfcLightSourcePositional::QuadricAttenuation() const { return *data_->getArgument(8); }
void IfcLightSourcePositional::setQuadricAttenuation(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcLightSourcePositional::declaration() const { return *IfcLightSourcePositional_type; }
Type::Enum IfcLightSourcePositional::Class() { return Type::IfcLightSourcePositional; }
IfcLightSourcePositional::IfcLightSourcePositional(IfcAbstractEntity* e) : IfcLightSource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightSourcePositional)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< std::string > v1_Name, IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation) : IfcLightSource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_LightColour)); if (v3_AmbientIntensity) { e->setArgument(2,(*v3_AmbientIntensity)); } else { e->setArgument(2); } if (v4_Intensity) { e->setArgument(3,(*v4_Intensity)); } else { e->setArgument(3); } e->setArgument(4,(v5_Position)); e->setArgument(5,(v6_Radius)); e->setArgument(6,(v7_ConstantAttenuation)); e->setArgument(7,(v8_DistanceAttenuation)); e->setArgument(8,(v9_QuadricAttenuation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightSourceSpot
IfcDirection* IfcLightSourceSpot::Orientation() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcLightSourceSpot::setOrientation(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcLightSourceSpot::hasConcentrationExponent() const { return !data_->getArgument(10)->isNull(); }
double IfcLightSourceSpot::ConcentrationExponent() const { return *data_->getArgument(10); }
void IfcLightSourceSpot::setConcentrationExponent(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
double IfcLightSourceSpot::SpreadAngle() const { return *data_->getArgument(11); }
void IfcLightSourceSpot::setSpreadAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
double IfcLightSourceSpot::BeamWidthAngle() const { return *data_->getArgument(12); }
void IfcLightSourceSpot::setBeamWidthAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcLightSourceSpot::declaration() const { return *IfcLightSourceSpot_type; }
Type::Enum IfcLightSourceSpot::Class() { return Type::IfcLightSourceSpot; }
IfcLightSourceSpot::IfcLightSourceSpot(IfcAbstractEntity* e) : IfcLightSourcePositional((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightSourceSpot)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightSourceSpot::IfcLightSourceSpot(boost::optional< std::string > v1_Name, IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation, IfcDirection* v10_Orientation, boost::optional< double > v11_ConcentrationExponent, double v12_SpreadAngle, double v13_BeamWidthAngle) : IfcLightSourcePositional((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_LightColour)); if (v3_AmbientIntensity) { e->setArgument(2,(*v3_AmbientIntensity)); } else { e->setArgument(2); } if (v4_Intensity) { e->setArgument(3,(*v4_Intensity)); } else { e->setArgument(3); } e->setArgument(4,(v5_Position)); e->setArgument(5,(v6_Radius)); e->setArgument(6,(v7_ConstantAttenuation)); e->setArgument(7,(v8_DistanceAttenuation)); e->setArgument(8,(v9_QuadricAttenuation)); e->setArgument(9,(v10_Orientation)); if (v11_ConcentrationExponent) { e->setArgument(10,(*v11_ConcentrationExponent)); } else { e->setArgument(10); } e->setArgument(11,(v12_SpreadAngle)); e->setArgument(12,(v13_BeamWidthAngle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLine
IfcCartesianPoint* IfcLine::Pnt() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcLine::setPnt(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcVector* IfcLine::Dir() const { return (IfcVector*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcLine::setDir(IfcVector* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcLine::declaration() const { return *IfcLine_type; }
Type::Enum IfcLine::Class() { return Type::IfcLine; }
IfcLine::IfcLine(IfcAbstractEntity* e) : IfcCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLine)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLine::IfcLine(IfcCartesianPoint* v1_Pnt, IfcVector* v2_Dir) : IfcCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Pnt)); e->setArgument(1,(v2_Dir)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLinearDimension


const IfcParse::entity& IfcLinearDimension::declaration() const { return *IfcLinearDimension_type; }
Type::Enum IfcLinearDimension::Class() { return Type::IfcLinearDimension; }
IfcLinearDimension::IfcLinearDimension(IfcAbstractEntity* e) : IfcDimensionCurveDirectedCallout((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLinearDimension)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLinearDimension::IfcLinearDimension(IfcEntityList::ptr v1_Contents) : IfcDimensionCurveDirectedCallout((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Contents)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLocalPlacement
bool IfcLocalPlacement::hasPlacementRelTo() const { return !data_->getArgument(0)->isNull(); }
IfcObjectPlacement* IfcLocalPlacement::PlacementRelTo() const { return (IfcObjectPlacement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcLocalPlacement::setPlacementRelTo(IfcObjectPlacement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcAxis2Placement* IfcLocalPlacement::RelativePlacement() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcLocalPlacement::setRelativePlacement(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


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

// Function implementations for IfcLocalTime
int IfcLocalTime::HourComponent() const { return *data_->getArgument(0); }
void IfcLocalTime::setHourComponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcLocalTime::hasMinuteComponent() const { return !data_->getArgument(1)->isNull(); }
int IfcLocalTime::MinuteComponent() const { return *data_->getArgument(1); }
void IfcLocalTime::setMinuteComponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcLocalTime::hasSecondComponent() const { return !data_->getArgument(2)->isNull(); }
double IfcLocalTime::SecondComponent() const { return *data_->getArgument(2); }
void IfcLocalTime::setSecondComponent(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcLocalTime::hasZone() const { return !data_->getArgument(3)->isNull(); }
IfcCoordinatedUniversalTimeOffset* IfcLocalTime::Zone() const { return (IfcCoordinatedUniversalTimeOffset*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcLocalTime::setZone(IfcCoordinatedUniversalTimeOffset* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcLocalTime::hasDaylightSavingOffset() const { return !data_->getArgument(4)->isNull(); }
int IfcLocalTime::DaylightSavingOffset() const { return *data_->getArgument(4); }
void IfcLocalTime::setDaylightSavingOffset(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcLocalTime::declaration() const { return *IfcLocalTime_type; }
Type::Enum IfcLocalTime::Class() { return Type::IfcLocalTime; }
IfcLocalTime::IfcLocalTime(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcLocalTime)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLocalTime::IfcLocalTime(int v1_HourComponent, boost::optional< int > v2_MinuteComponent, boost::optional< double > v3_SecondComponent, IfcCoordinatedUniversalTimeOffset* v4_Zone, boost::optional< int > v5_DaylightSavingOffset) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_HourComponent)); if (v2_MinuteComponent) { e->setArgument(1,(*v2_MinuteComponent)); } else { e->setArgument(1); } if (v3_SecondComponent) { e->setArgument(2,(*v3_SecondComponent)); } else { e->setArgument(2); } e->setArgument(3,(v4_Zone)); if (v5_DaylightSavingOffset) { e->setArgument(4,(*v5_DaylightSavingOffset)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLoop


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

// Function implementations for IfcManifoldSolidBrep
IfcClosedShell* IfcManifoldSolidBrep::Outer() const { return (IfcClosedShell*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcManifoldSolidBrep::setOuter(IfcClosedShell* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


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

// Function implementations for IfcMappedItem
IfcRepresentationMap* IfcMappedItem::MappingSource() const { return (IfcRepresentationMap*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcMappedItem::setMappingSource(IfcRepresentationMap* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcCartesianTransformationOperator* IfcMappedItem::MappingTarget() const { return (IfcCartesianTransformationOperator*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcMappedItem::setMappingTarget(IfcCartesianTransformationOperator* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcMappedItem::declaration() const { return *IfcMappedItem_type; }
Type::Enum IfcMappedItem::Class() { return Type::IfcMappedItem; }
IfcMappedItem::IfcMappedItem(IfcAbstractEntity* e) : IfcRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMappedItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMappedItem::IfcMappedItem(IfcRepresentationMap* v1_MappingSource, IfcCartesianTransformationOperator* v2_MappingTarget) : IfcRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_MappingSource)); e->setArgument(1,(v2_MappingTarget)); data_ = e; EntityBuffer::Add(this); }

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

IfcMaterialDefinitionRepresentation::list::ptr IfcMaterial::HasRepresentation() const { return data_->getInverse(Type::IfcMaterialDefinitionRepresentation, 3)->as<IfcMaterialDefinitionRepresentation>(); }
IfcMaterialClassificationRelationship::list::ptr IfcMaterial::ClassifiedAs() const { return data_->getInverse(Type::IfcMaterialClassificationRelationship, 1)->as<IfcMaterialClassificationRelationship>(); }

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

// Function implementations for IfcMaterialClassificationRelationship
IfcEntityList::ptr IfcMaterialClassificationRelationship::MaterialClassifications() const { return *data_->getArgument(0); }
void IfcMaterialClassificationRelationship::setMaterialClassifications(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcMaterial* IfcMaterialClassificationRelationship::ClassifiedMaterial() const { return (IfcMaterial*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcMaterialClassificationRelationship::setClassifiedMaterial(IfcMaterial* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcMaterialClassificationRelationship::declaration() const { return *IfcMaterialClassificationRelationship_type; }
Type::Enum IfcMaterialClassificationRelationship::Class() { return Type::IfcMaterialClassificationRelationship; }
IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcMaterialClassificationRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(IfcEntityList::ptr v1_MaterialClassifications, IfcMaterial* v2_ClassifiedMaterial) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_MaterialClassifications)); e->setArgument(1,(v2_ClassifiedMaterial)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialDefinitionRepresentation
IfcMaterial* IfcMaterialDefinitionRepresentation::RepresentedMaterial() const { return (IfcMaterial*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcMaterialDefinitionRepresentation::setRepresentedMaterial(IfcMaterial* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


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

// Function implementations for IfcMaterialLayer
bool IfcMaterialLayer::hasMaterial() const { return !data_->getArgument(0)->isNull(); }
IfcMaterial* IfcMaterialLayer::Material() const { return (IfcMaterial*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcMaterialLayer::setMaterial(IfcMaterial* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcMaterialLayer::LayerThickness() const { return *data_->getArgument(1); }
void IfcMaterialLayer::setLayerThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcMaterialLayer::hasIsVentilated() const { return !data_->getArgument(2)->isNull(); }
boost::logic::tribool IfcMaterialLayer::IsVentilated() const { return *data_->getArgument(2); }
void IfcMaterialLayer::setIsVentilated(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }

IfcMaterialLayerSet::list::ptr IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(Type::IfcMaterialLayerSet, 0)->as<IfcMaterialLayerSet>(); }

const IfcParse::entity& IfcMaterialLayer::declaration() const { return *IfcMaterialLayer_type; }
Type::Enum IfcMaterialLayer::Class() { return Type::IfcMaterialLayer; }
IfcMaterialLayer::IfcMaterialLayer(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcMaterialLayer)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialLayer::IfcMaterialLayer(IfcMaterial* v1_Material, double v2_LayerThickness, boost::optional< boost::logic::tribool > v3_IsVentilated) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); e->setArgument(1,(v2_LayerThickness)); if (v3_IsVentilated) { e->setArgument(2,(*v3_IsVentilated)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialLayerSet
IfcTemplatedEntityList< IfcMaterialLayer >::ptr IfcMaterialLayerSet::MaterialLayers() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcMaterialLayer>(); }
void IfcMaterialLayerSet::setMaterialLayers(IfcTemplatedEntityList< IfcMaterialLayer >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
bool IfcMaterialLayerSet::hasLayerSetName() const { return !data_->getArgument(1)->isNull(); }
std::string IfcMaterialLayerSet::LayerSetName() const { return *data_->getArgument(1); }
void IfcMaterialLayerSet::setLayerSetName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


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

// Function implementations for IfcMaterialLayerSetUsage
IfcMaterialLayerSet* IfcMaterialLayerSetUsage::ForLayerSet() const { return (IfcMaterialLayerSet*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcMaterialLayerSetUsage::setForLayerSet(IfcMaterialLayerSet* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum IfcMaterialLayerSetUsage::LayerSetDirection() const { return IfcLayerSetDirectionEnum::FromString(*data_->getArgument(1)); }
void IfcMaterialLayerSetUsage::setLayerSetDirection(IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v,IfcLayerSetDirectionEnum::ToString(v)); }
IfcDirectionSenseEnum::IfcDirectionSenseEnum IfcMaterialLayerSetUsage::DirectionSense() const { return IfcDirectionSenseEnum::FromString(*data_->getArgument(2)); }
void IfcMaterialLayerSetUsage::setDirectionSense(IfcDirectionSenseEnum::IfcDirectionSenseEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcDirectionSenseEnum::ToString(v)); }
double IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const { return *data_->getArgument(3); }
void IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcMaterialLayerSetUsage::declaration() const { return *IfcMaterialLayerSetUsage_type; }
Type::Enum IfcMaterialLayerSetUsage::Class() { return Type::IfcMaterialLayerSetUsage; }
IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcMaterialLayerSetUsage)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(IfcMaterialLayerSet* v1_ForLayerSet, IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum v2_LayerSetDirection, IfcDirectionSenseEnum::IfcDirectionSenseEnum v3_DirectionSense, double v4_OffsetFromReferenceLine) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ForLayerSet)); e->setArgument(1,v2_LayerSetDirection,IfcLayerSetDirectionEnum::ToString(v2_LayerSetDirection)); e->setArgument(2,v3_DirectionSense,IfcDirectionSenseEnum::ToString(v3_DirectionSense)); e->setArgument(3,(v4_OffsetFromReferenceLine)); data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcMaterialProperties
IfcMaterial* IfcMaterialProperties::Material() const { return (IfcMaterial*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcMaterialProperties::setMaterial(IfcMaterial* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


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

// Function implementations for IfcMeasureWithUnit
IfcValue* IfcMeasureWithUnit::ValueComponent() const { return (IfcValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcMeasureWithUnit::setValueComponent(IfcValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcUnit* IfcMeasureWithUnit::UnitComponent() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcMeasureWithUnit::setUnitComponent(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcMeasureWithUnit::declaration() const { return *IfcMeasureWithUnit_type; }
Type::Enum IfcMeasureWithUnit::Class() { return Type::IfcMeasureWithUnit; }
IfcMeasureWithUnit::IfcMeasureWithUnit(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcMeasureWithUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMeasureWithUnit::IfcMeasureWithUnit(IfcValue* v1_ValueComponent, IfcUnit* v2_UnitComponent) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ValueComponent)); e->setArgument(1,(v2_UnitComponent)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMechanicalConcreteMaterialProperties
bool IfcMechanicalConcreteMaterialProperties::hasCompressiveStrength() const { return !data_->getArgument(6)->isNull(); }
double IfcMechanicalConcreteMaterialProperties::CompressiveStrength() const { return *data_->getArgument(6); }
void IfcMechanicalConcreteMaterialProperties::setCompressiveStrength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcMechanicalConcreteMaterialProperties::hasMaxAggregateSize() const { return !data_->getArgument(7)->isNull(); }
double IfcMechanicalConcreteMaterialProperties::MaxAggregateSize() const { return *data_->getArgument(7); }
void IfcMechanicalConcreteMaterialProperties::setMaxAggregateSize(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcMechanicalConcreteMaterialProperties::hasAdmixturesDescription() const { return !data_->getArgument(8)->isNull(); }
std::string IfcMechanicalConcreteMaterialProperties::AdmixturesDescription() const { return *data_->getArgument(8); }
void IfcMechanicalConcreteMaterialProperties::setAdmixturesDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcMechanicalConcreteMaterialProperties::hasWorkability() const { return !data_->getArgument(9)->isNull(); }
std::string IfcMechanicalConcreteMaterialProperties::Workability() const { return *data_->getArgument(9); }
void IfcMechanicalConcreteMaterialProperties::setWorkability(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcMechanicalConcreteMaterialProperties::hasProtectivePoreRatio() const { return !data_->getArgument(10)->isNull(); }
double IfcMechanicalConcreteMaterialProperties::ProtectivePoreRatio() const { return *data_->getArgument(10); }
void IfcMechanicalConcreteMaterialProperties::setProtectivePoreRatio(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcMechanicalConcreteMaterialProperties::hasWaterImpermeability() const { return !data_->getArgument(11)->isNull(); }
std::string IfcMechanicalConcreteMaterialProperties::WaterImpermeability() const { return *data_->getArgument(11); }
void IfcMechanicalConcreteMaterialProperties::setWaterImpermeability(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


const IfcParse::entity& IfcMechanicalConcreteMaterialProperties::declaration() const { return *IfcMechanicalConcreteMaterialProperties_type; }
Type::Enum IfcMechanicalConcreteMaterialProperties::Class() { return Type::IfcMechanicalConcreteMaterialProperties; }
IfcMechanicalConcreteMaterialProperties::IfcMechanicalConcreteMaterialProperties(IfcAbstractEntity* e) : IfcMechanicalMaterialProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMechanicalConcreteMaterialProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMechanicalConcreteMaterialProperties::IfcMechanicalConcreteMaterialProperties(IfcMaterial* v1_Material, boost::optional< double > v2_DynamicViscosity, boost::optional< double > v3_YoungModulus, boost::optional< double > v4_ShearModulus, boost::optional< double > v5_PoissonRatio, boost::optional< double > v6_ThermalExpansionCoefficient, boost::optional< double > v7_CompressiveStrength, boost::optional< double > v8_MaxAggregateSize, boost::optional< std::string > v9_AdmixturesDescription, boost::optional< std::string > v10_Workability, boost::optional< double > v11_ProtectivePoreRatio, boost::optional< std::string > v12_WaterImpermeability) : IfcMechanicalMaterialProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); if (v2_DynamicViscosity) { e->setArgument(1,(*v2_DynamicViscosity)); } else { e->setArgument(1); } if (v3_YoungModulus) { e->setArgument(2,(*v3_YoungModulus)); } else { e->setArgument(2); } if (v4_ShearModulus) { e->setArgument(3,(*v4_ShearModulus)); } else { e->setArgument(3); } if (v5_PoissonRatio) { e->setArgument(4,(*v5_PoissonRatio)); } else { e->setArgument(4); } if (v6_ThermalExpansionCoefficient) { e->setArgument(5,(*v6_ThermalExpansionCoefficient)); } else { e->setArgument(5); } if (v7_CompressiveStrength) { e->setArgument(6,(*v7_CompressiveStrength)); } else { e->setArgument(6); } if (v8_MaxAggregateSize) { e->setArgument(7,(*v8_MaxAggregateSize)); } else { e->setArgument(7); } if (v9_AdmixturesDescription) { e->setArgument(8,(*v9_AdmixturesDescription)); } else { e->setArgument(8); } if (v10_Workability) { e->setArgument(9,(*v10_Workability)); } else { e->setArgument(9); } if (v11_ProtectivePoreRatio) { e->setArgument(10,(*v11_ProtectivePoreRatio)); } else { e->setArgument(10); } if (v12_WaterImpermeability) { e->setArgument(11,(*v12_WaterImpermeability)); } else { e->setArgument(11); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMechanicalFastener
bool IfcMechanicalFastener::hasNominalDiameter() const { return !data_->getArgument(8)->isNull(); }
double IfcMechanicalFastener::NominalDiameter() const { return *data_->getArgument(8); }
void IfcMechanicalFastener::setNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcMechanicalFastener::hasNominalLength() const { return !data_->getArgument(9)->isNull(); }
double IfcMechanicalFastener::NominalLength() const { return *data_->getArgument(9); }
void IfcMechanicalFastener::setNominalLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


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

// Function implementations for IfcMechanicalFastenerType


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

// Function implementations for IfcMechanicalMaterialProperties
bool IfcMechanicalMaterialProperties::hasDynamicViscosity() const { return !data_->getArgument(1)->isNull(); }
double IfcMechanicalMaterialProperties::DynamicViscosity() const { return *data_->getArgument(1); }
void IfcMechanicalMaterialProperties::setDynamicViscosity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcMechanicalMaterialProperties::hasYoungModulus() const { return !data_->getArgument(2)->isNull(); }
double IfcMechanicalMaterialProperties::YoungModulus() const { return *data_->getArgument(2); }
void IfcMechanicalMaterialProperties::setYoungModulus(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcMechanicalMaterialProperties::hasShearModulus() const { return !data_->getArgument(3)->isNull(); }
double IfcMechanicalMaterialProperties::ShearModulus() const { return *data_->getArgument(3); }
void IfcMechanicalMaterialProperties::setShearModulus(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcMechanicalMaterialProperties::hasPoissonRatio() const { return !data_->getArgument(4)->isNull(); }
double IfcMechanicalMaterialProperties::PoissonRatio() const { return *data_->getArgument(4); }
void IfcMechanicalMaterialProperties::setPoissonRatio(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcMechanicalMaterialProperties::hasThermalExpansionCoefficient() const { return !data_->getArgument(5)->isNull(); }
double IfcMechanicalMaterialProperties::ThermalExpansionCoefficient() const { return *data_->getArgument(5); }
void IfcMechanicalMaterialProperties::setThermalExpansionCoefficient(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcMechanicalMaterialProperties::declaration() const { return *IfcMechanicalMaterialProperties_type; }
Type::Enum IfcMechanicalMaterialProperties::Class() { return Type::IfcMechanicalMaterialProperties; }
IfcMechanicalMaterialProperties::IfcMechanicalMaterialProperties(IfcAbstractEntity* e) : IfcMaterialProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMechanicalMaterialProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMechanicalMaterialProperties::IfcMechanicalMaterialProperties(IfcMaterial* v1_Material, boost::optional< double > v2_DynamicViscosity, boost::optional< double > v3_YoungModulus, boost::optional< double > v4_ShearModulus, boost::optional< double > v5_PoissonRatio, boost::optional< double > v6_ThermalExpansionCoefficient) : IfcMaterialProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); if (v2_DynamicViscosity) { e->setArgument(1,(*v2_DynamicViscosity)); } else { e->setArgument(1); } if (v3_YoungModulus) { e->setArgument(2,(*v3_YoungModulus)); } else { e->setArgument(2); } if (v4_ShearModulus) { e->setArgument(3,(*v4_ShearModulus)); } else { e->setArgument(3); } if (v5_PoissonRatio) { e->setArgument(4,(*v5_PoissonRatio)); } else { e->setArgument(4); } if (v6_ThermalExpansionCoefficient) { e->setArgument(5,(*v6_ThermalExpansionCoefficient)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMechanicalSteelMaterialProperties
bool IfcMechanicalSteelMaterialProperties::hasYieldStress() const { return !data_->getArgument(6)->isNull(); }
double IfcMechanicalSteelMaterialProperties::YieldStress() const { return *data_->getArgument(6); }
void IfcMechanicalSteelMaterialProperties::setYieldStress(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcMechanicalSteelMaterialProperties::hasUltimateStress() const { return !data_->getArgument(7)->isNull(); }
double IfcMechanicalSteelMaterialProperties::UltimateStress() const { return *data_->getArgument(7); }
void IfcMechanicalSteelMaterialProperties::setUltimateStress(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcMechanicalSteelMaterialProperties::hasUltimateStrain() const { return !data_->getArgument(8)->isNull(); }
double IfcMechanicalSteelMaterialProperties::UltimateStrain() const { return *data_->getArgument(8); }
void IfcMechanicalSteelMaterialProperties::setUltimateStrain(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcMechanicalSteelMaterialProperties::hasHardeningModule() const { return !data_->getArgument(9)->isNull(); }
double IfcMechanicalSteelMaterialProperties::HardeningModule() const { return *data_->getArgument(9); }
void IfcMechanicalSteelMaterialProperties::setHardeningModule(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcMechanicalSteelMaterialProperties::hasProportionalStress() const { return !data_->getArgument(10)->isNull(); }
double IfcMechanicalSteelMaterialProperties::ProportionalStress() const { return *data_->getArgument(10); }
void IfcMechanicalSteelMaterialProperties::setProportionalStress(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcMechanicalSteelMaterialProperties::hasPlasticStrain() const { return !data_->getArgument(11)->isNull(); }
double IfcMechanicalSteelMaterialProperties::PlasticStrain() const { return *data_->getArgument(11); }
void IfcMechanicalSteelMaterialProperties::setPlasticStrain(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcMechanicalSteelMaterialProperties::hasRelaxations() const { return !data_->getArgument(12)->isNull(); }
IfcTemplatedEntityList< IfcRelaxation >::ptr IfcMechanicalSteelMaterialProperties::Relaxations() const { IfcEntityList::ptr es = *data_->getArgument(12); return es->as<IfcRelaxation>(); }
void IfcMechanicalSteelMaterialProperties::setRelaxations(IfcTemplatedEntityList< IfcRelaxation >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v->generalize()); }


const IfcParse::entity& IfcMechanicalSteelMaterialProperties::declaration() const { return *IfcMechanicalSteelMaterialProperties_type; }
Type::Enum IfcMechanicalSteelMaterialProperties::Class() { return Type::IfcMechanicalSteelMaterialProperties; }
IfcMechanicalSteelMaterialProperties::IfcMechanicalSteelMaterialProperties(IfcAbstractEntity* e) : IfcMechanicalMaterialProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMechanicalSteelMaterialProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMechanicalSteelMaterialProperties::IfcMechanicalSteelMaterialProperties(IfcMaterial* v1_Material, boost::optional< double > v2_DynamicViscosity, boost::optional< double > v3_YoungModulus, boost::optional< double > v4_ShearModulus, boost::optional< double > v5_PoissonRatio, boost::optional< double > v6_ThermalExpansionCoefficient, boost::optional< double > v7_YieldStress, boost::optional< double > v8_UltimateStress, boost::optional< double > v9_UltimateStrain, boost::optional< double > v10_HardeningModule, boost::optional< double > v11_ProportionalStress, boost::optional< double > v12_PlasticStrain, boost::optional< IfcTemplatedEntityList< IfcRelaxation >::ptr > v13_Relaxations) : IfcMechanicalMaterialProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); if (v2_DynamicViscosity) { e->setArgument(1,(*v2_DynamicViscosity)); } else { e->setArgument(1); } if (v3_YoungModulus) { e->setArgument(2,(*v3_YoungModulus)); } else { e->setArgument(2); } if (v4_ShearModulus) { e->setArgument(3,(*v4_ShearModulus)); } else { e->setArgument(3); } if (v5_PoissonRatio) { e->setArgument(4,(*v5_PoissonRatio)); } else { e->setArgument(4); } if (v6_ThermalExpansionCoefficient) { e->setArgument(5,(*v6_ThermalExpansionCoefficient)); } else { e->setArgument(5); } if (v7_YieldStress) { e->setArgument(6,(*v7_YieldStress)); } else { e->setArgument(6); } if (v8_UltimateStress) { e->setArgument(7,(*v8_UltimateStress)); } else { e->setArgument(7); } if (v9_UltimateStrain) { e->setArgument(8,(*v9_UltimateStrain)); } else { e->setArgument(8); } if (v10_HardeningModule) { e->setArgument(9,(*v10_HardeningModule)); } else { e->setArgument(9); } if (v11_ProportionalStress) { e->setArgument(10,(*v11_ProportionalStress)); } else { e->setArgument(10); } if (v12_PlasticStrain) { e->setArgument(11,(*v12_PlasticStrain)); } else { e->setArgument(11); } if (v13_Relaxations) { e->setArgument(12,(*v13_Relaxations)->generalize()); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMember


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

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


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

// Function implementations for IfcMetric
IfcBenchmarkEnum::IfcBenchmarkEnum IfcMetric::Benchmark() const { return IfcBenchmarkEnum::FromString(*data_->getArgument(7)); }
void IfcMetric::setBenchmark(IfcBenchmarkEnum::IfcBenchmarkEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcBenchmarkEnum::ToString(v)); }
bool IfcMetric::hasValueSource() const { return !data_->getArgument(8)->isNull(); }
std::string IfcMetric::ValueSource() const { return *data_->getArgument(8); }
void IfcMetric::setValueSource(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
IfcMetricValueSelect* IfcMetric::DataValue() const { return (IfcMetricValueSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcMetric::setDataValue(IfcMetricValueSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcMetric::declaration() const { return *IfcMetric_type; }
Type::Enum IfcMetric::Class() { return Type::IfcMetric; }
IfcMetric::IfcMetric(IfcAbstractEntity* e) : IfcConstraint((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMetric)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMetric::IfcMetric(std::string v1_Name, boost::optional< std::string > v2_Description, IfcConstraintEnum::IfcConstraintEnum v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, IfcActorSelect* v5_CreatingActor, IfcDateTimeSelect* v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, IfcBenchmarkEnum::IfcBenchmarkEnum v8_Benchmark, boost::optional< std::string > v9_ValueSource, IfcMetricValueSelect* v10_DataValue) : IfcConstraint((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,v3_ConstraintGrade,IfcConstraintEnum::ToString(v3_ConstraintGrade)); if (v4_ConstraintSource) { e->setArgument(3,(*v4_ConstraintSource)); } else { e->setArgument(3); } e->setArgument(4,(v5_CreatingActor)); e->setArgument(5,(v6_CreationTime)); if (v7_UserDefinedGrade) { e->setArgument(6,(*v7_UserDefinedGrade)); } else { e->setArgument(6); } e->setArgument(7,v8_Benchmark,IfcBenchmarkEnum::ToString(v8_Benchmark)); if (v9_ValueSource) { e->setArgument(8,(*v9_ValueSource)); } else { e->setArgument(8); } e->setArgument(9,(v10_DataValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMonetaryUnit
IfcCurrencyEnum::IfcCurrencyEnum IfcMonetaryUnit::Currency() const { return IfcCurrencyEnum::FromString(*data_->getArgument(0)); }
void IfcMonetaryUnit::setCurrency(IfcCurrencyEnum::IfcCurrencyEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcCurrencyEnum::ToString(v)); }


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

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


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

// Function implementations for IfcMove
IfcSpatialStructureElement* IfcMove::MoveFrom() const { return (IfcSpatialStructureElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcMove::setMoveFrom(IfcSpatialStructureElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
IfcSpatialStructureElement* IfcMove::MoveTo() const { return (IfcSpatialStructureElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(11))); }
void IfcMove::setMoveTo(IfcSpatialStructureElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcMove::hasPunchList() const { return !data_->getArgument(12)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcMove::PunchList() const { return *data_->getArgument(12); }
void IfcMove::setPunchList(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcMove::declaration() const { return *IfcMove_type; }
Type::Enum IfcMove::Class() { return Type::IfcMove; }
IfcMove::IfcMove(IfcAbstractEntity* e) : IfcTask((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMove)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMove::IfcMove(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, std::string v6_TaskId, boost::optional< std::string > v7_Status, boost::optional< std::string > v8_WorkMethod, bool v9_IsMilestone, boost::optional< int > v10_Priority, IfcSpatialStructureElement* v11_MoveFrom, IfcSpatialStructureElement* v12_MoveTo, boost::optional< std::vector< std::string > /*[1:?]*/ > v13_PunchList) : IfcTask((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_TaskId)); if (v7_Status) { e->setArgument(6,(*v7_Status)); } else { e->setArgument(6); } if (v8_WorkMethod) { e->setArgument(7,(*v8_WorkMethod)); } else { e->setArgument(7); } e->setArgument(8,(v9_IsMilestone)); if (v10_Priority) { e->setArgument(9,(*v10_Priority)); } else { e->setArgument(9); } e->setArgument(10,(v11_MoveFrom)); e->setArgument(11,(v12_MoveTo)); if (v13_PunchList) { e->setArgument(12,(*v13_PunchList)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcNamedUnit
IfcDimensionalExponents* IfcNamedUnit::Dimensions() const { return (IfcDimensionalExponents*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcNamedUnit::setDimensions(IfcDimensionalExponents* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcUnitEnum::IfcUnitEnum IfcNamedUnit::UnitType() const { return IfcUnitEnum::FromString(*data_->getArgument(1)); }
void IfcNamedUnit::setUnitType(IfcUnitEnum::IfcUnitEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v,IfcUnitEnum::ToString(v)); }


const IfcParse::entity& IfcNamedUnit::declaration() const { return *IfcNamedUnit_type; }
Type::Enum IfcNamedUnit::Class() { return Type::IfcNamedUnit; }
IfcNamedUnit::IfcNamedUnit(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcNamedUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcNamedUnit::IfcNamedUnit(IfcDimensionalExponents* v1_Dimensions, IfcUnitEnum::IfcUnitEnum v2_UnitType) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Dimensions)); e->setArgument(1,v2_UnitType,IfcUnitEnum::ToString(v2_UnitType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcObject
bool IfcObject::hasObjectType() const { return !data_->getArgument(4)->isNull(); }
std::string IfcObject::ObjectType() const { return *data_->getArgument(4); }
void IfcObject::setObjectType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }

IfcRelDefines::list::ptr IfcObject::IsDefinedBy() const { return data_->getInverse(Type::IfcRelDefines, 4)->as<IfcRelDefines>(); }

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

// Function implementations for IfcObjectDefinition

IfcRelAssigns::list::ptr IfcObjectDefinition::HasAssignments() const { return data_->getInverse(Type::IfcRelAssigns, 4)->as<IfcRelAssigns>(); }
IfcRelDecomposes::list::ptr IfcObjectDefinition::IsDecomposedBy() const { return data_->getInverse(Type::IfcRelDecomposes, 4)->as<IfcRelDecomposes>(); }
IfcRelDecomposes::list::ptr IfcObjectDefinition::Decomposes() const { return data_->getInverse(Type::IfcRelDecomposes, 5)->as<IfcRelDecomposes>(); }
IfcRelAssociates::list::ptr IfcObjectDefinition::HasAssociations() const { return data_->getInverse(Type::IfcRelAssociates, 4)->as<IfcRelAssociates>(); }

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

// Function implementations for IfcObjectPlacement

IfcProduct::list::ptr IfcObjectPlacement::PlacesObject() const { return data_->getInverse(Type::IfcProduct, 5)->as<IfcProduct>(); }
IfcLocalPlacement::list::ptr IfcObjectPlacement::ReferencedByPlacements() const { return data_->getInverse(Type::IfcLocalPlacement, 0)->as<IfcLocalPlacement>(); }

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

// Function implementations for IfcObjective
bool IfcObjective::hasBenchmarkValues() const { return !data_->getArgument(7)->isNull(); }
IfcMetric* IfcObjective::BenchmarkValues() const { return (IfcMetric*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcObjective::setBenchmarkValues(IfcMetric* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcObjective::hasResultValues() const { return !data_->getArgument(8)->isNull(); }
IfcMetric* IfcObjective::ResultValues() const { return (IfcMetric*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcObjective::setResultValues(IfcMetric* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
IfcObjectiveEnum::IfcObjectiveEnum IfcObjective::ObjectiveQualifier() const { return IfcObjectiveEnum::FromString(*data_->getArgument(9)); }
void IfcObjective::setObjectiveQualifier(IfcObjectiveEnum::IfcObjectiveEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcObjectiveEnum::ToString(v)); }
bool IfcObjective::hasUserDefinedQualifier() const { return !data_->getArgument(10)->isNull(); }
std::string IfcObjective::UserDefinedQualifier() const { return *data_->getArgument(10); }
void IfcObjective::setUserDefinedQualifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcObjective::declaration() const { return *IfcObjective_type; }
Type::Enum IfcObjective::Class() { return Type::IfcObjective; }
IfcObjective::IfcObjective(IfcAbstractEntity* e) : IfcConstraint((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcObjective)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std::string > v2_Description, IfcConstraintEnum::IfcConstraintEnum v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, IfcActorSelect* v5_CreatingActor, IfcDateTimeSelect* v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, IfcMetric* v8_BenchmarkValues, IfcMetric* v9_ResultValues, IfcObjectiveEnum::IfcObjectiveEnum v10_ObjectiveQualifier, boost::optional< std::string > v11_UserDefinedQualifier) : IfcConstraint((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,v3_ConstraintGrade,IfcConstraintEnum::ToString(v3_ConstraintGrade)); if (v4_ConstraintSource) { e->setArgument(3,(*v4_ConstraintSource)); } else { e->setArgument(3); } e->setArgument(4,(v5_CreatingActor)); e->setArgument(5,(v6_CreationTime)); if (v7_UserDefinedGrade) { e->setArgument(6,(*v7_UserDefinedGrade)); } else { e->setArgument(6); } e->setArgument(7,(v8_BenchmarkValues)); e->setArgument(8,(v9_ResultValues)); e->setArgument(9,v10_ObjectiveQualifier,IfcObjectiveEnum::ToString(v10_ObjectiveQualifier)); if (v11_UserDefinedQualifier) { e->setArgument(10,(*v11_UserDefinedQualifier)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcOffsetCurve2D
IfcCurve* IfcOffsetCurve2D::BasisCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcOffsetCurve2D::setBasisCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcOffsetCurve2D::Distance() const { return *data_->getArgument(1); }
void IfcOffsetCurve2D::setDistance(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
boost::logic::tribool IfcOffsetCurve2D::SelfIntersect() const { return *data_->getArgument(2); }
void IfcOffsetCurve2D::setSelfIntersect(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcOffsetCurve2D::declaration() const { return *IfcOffsetCurve2D_type; }
Type::Enum IfcOffsetCurve2D::Class() { return Type::IfcOffsetCurve2D; }
IfcOffsetCurve2D::IfcOffsetCurve2D(IfcAbstractEntity* e) : IfcCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOffsetCurve2D)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOffsetCurve2D::IfcOffsetCurve2D(IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect) : IfcCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisCurve)); e->setArgument(1,(v2_Distance)); e->setArgument(2,(v3_SelfIntersect)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOffsetCurve3D
IfcCurve* IfcOffsetCurve3D::BasisCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcOffsetCurve3D::setBasisCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcOffsetCurve3D::Distance() const { return *data_->getArgument(1); }
void IfcOffsetCurve3D::setDistance(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
boost::logic::tribool IfcOffsetCurve3D::SelfIntersect() const { return *data_->getArgument(2); }
void IfcOffsetCurve3D::setSelfIntersect(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcDirection* IfcOffsetCurve3D::RefDirection() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcOffsetCurve3D::setRefDirection(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcOffsetCurve3D::declaration() const { return *IfcOffsetCurve3D_type; }
Type::Enum IfcOffsetCurve3D::Class() { return Type::IfcOffsetCurve3D; }
IfcOffsetCurve3D::IfcOffsetCurve3D(IfcAbstractEntity* e) : IfcCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOffsetCurve3D)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOffsetCurve3D::IfcOffsetCurve3D(IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect, IfcDirection* v4_RefDirection) : IfcCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisCurve)); e->setArgument(1,(v2_Distance)); e->setArgument(2,(v3_SelfIntersect)); e->setArgument(3,(v4_RefDirection)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOneDirectionRepeatFactor
IfcVector* IfcOneDirectionRepeatFactor::RepeatFactor() const { return (IfcVector*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcOneDirectionRepeatFactor::setRepeatFactor(IfcVector* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


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

// Function implementations for IfcOpenShell


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

// Function implementations for IfcOpeningElement

IfcRelFillsElement::list::ptr IfcOpeningElement::HasFillings() const { return data_->getInverse(Type::IfcRelFillsElement, 4)->as<IfcRelFillsElement>(); }

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

// Function implementations for IfcOpticalMaterialProperties
bool IfcOpticalMaterialProperties::hasVisibleTransmittance() const { return !data_->getArgument(1)->isNull(); }
double IfcOpticalMaterialProperties::VisibleTransmittance() const { return *data_->getArgument(1); }
void IfcOpticalMaterialProperties::setVisibleTransmittance(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcOpticalMaterialProperties::hasSolarTransmittance() const { return !data_->getArgument(2)->isNull(); }
double IfcOpticalMaterialProperties::SolarTransmittance() const { return *data_->getArgument(2); }
void IfcOpticalMaterialProperties::setSolarTransmittance(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcOpticalMaterialProperties::hasThermalIrTransmittance() const { return !data_->getArgument(3)->isNull(); }
double IfcOpticalMaterialProperties::ThermalIrTransmittance() const { return *data_->getArgument(3); }
void IfcOpticalMaterialProperties::setThermalIrTransmittance(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcOpticalMaterialProperties::hasThermalIrEmissivityBack() const { return !data_->getArgument(4)->isNull(); }
double IfcOpticalMaterialProperties::ThermalIrEmissivityBack() const { return *data_->getArgument(4); }
void IfcOpticalMaterialProperties::setThermalIrEmissivityBack(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcOpticalMaterialProperties::hasThermalIrEmissivityFront() const { return !data_->getArgument(5)->isNull(); }
double IfcOpticalMaterialProperties::ThermalIrEmissivityFront() const { return *data_->getArgument(5); }
void IfcOpticalMaterialProperties::setThermalIrEmissivityFront(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcOpticalMaterialProperties::hasVisibleReflectanceBack() const { return !data_->getArgument(6)->isNull(); }
double IfcOpticalMaterialProperties::VisibleReflectanceBack() const { return *data_->getArgument(6); }
void IfcOpticalMaterialProperties::setVisibleReflectanceBack(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcOpticalMaterialProperties::hasVisibleReflectanceFront() const { return !data_->getArgument(7)->isNull(); }
double IfcOpticalMaterialProperties::VisibleReflectanceFront() const { return *data_->getArgument(7); }
void IfcOpticalMaterialProperties::setVisibleReflectanceFront(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcOpticalMaterialProperties::hasSolarReflectanceFront() const { return !data_->getArgument(8)->isNull(); }
double IfcOpticalMaterialProperties::SolarReflectanceFront() const { return *data_->getArgument(8); }
void IfcOpticalMaterialProperties::setSolarReflectanceFront(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcOpticalMaterialProperties::hasSolarReflectanceBack() const { return !data_->getArgument(9)->isNull(); }
double IfcOpticalMaterialProperties::SolarReflectanceBack() const { return *data_->getArgument(9); }
void IfcOpticalMaterialProperties::setSolarReflectanceBack(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcOpticalMaterialProperties::declaration() const { return *IfcOpticalMaterialProperties_type; }
Type::Enum IfcOpticalMaterialProperties::Class() { return Type::IfcOpticalMaterialProperties; }
IfcOpticalMaterialProperties::IfcOpticalMaterialProperties(IfcAbstractEntity* e) : IfcMaterialProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOpticalMaterialProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOpticalMaterialProperties::IfcOpticalMaterialProperties(IfcMaterial* v1_Material, boost::optional< double > v2_VisibleTransmittance, boost::optional< double > v3_SolarTransmittance, boost::optional< double > v4_ThermalIrTransmittance, boost::optional< double > v5_ThermalIrEmissivityBack, boost::optional< double > v6_ThermalIrEmissivityFront, boost::optional< double > v7_VisibleReflectanceBack, boost::optional< double > v8_VisibleReflectanceFront, boost::optional< double > v9_SolarReflectanceFront, boost::optional< double > v10_SolarReflectanceBack) : IfcMaterialProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); if (v2_VisibleTransmittance) { e->setArgument(1,(*v2_VisibleTransmittance)); } else { e->setArgument(1); } if (v3_SolarTransmittance) { e->setArgument(2,(*v3_SolarTransmittance)); } else { e->setArgument(2); } if (v4_ThermalIrTransmittance) { e->setArgument(3,(*v4_ThermalIrTransmittance)); } else { e->setArgument(3); } if (v5_ThermalIrEmissivityBack) { e->setArgument(4,(*v5_ThermalIrEmissivityBack)); } else { e->setArgument(4); } if (v6_ThermalIrEmissivityFront) { e->setArgument(5,(*v6_ThermalIrEmissivityFront)); } else { e->setArgument(5); } if (v7_VisibleReflectanceBack) { e->setArgument(6,(*v7_VisibleReflectanceBack)); } else { e->setArgument(6); } if (v8_VisibleReflectanceFront) { e->setArgument(7,(*v8_VisibleReflectanceFront)); } else { e->setArgument(7); } if (v9_SolarReflectanceFront) { e->setArgument(8,(*v9_SolarReflectanceFront)); } else { e->setArgument(8); } if (v10_SolarReflectanceBack) { e->setArgument(9,(*v10_SolarReflectanceBack)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOrderAction
std::string IfcOrderAction::ActionID() const { return *data_->getArgument(10); }
void IfcOrderAction::setActionID(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcOrderAction::declaration() const { return *IfcOrderAction_type; }
Type::Enum IfcOrderAction::Class() { return Type::IfcOrderAction; }
IfcOrderAction::IfcOrderAction(IfcAbstractEntity* e) : IfcTask((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOrderAction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOrderAction::IfcOrderAction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, std::string v6_TaskId, boost::optional< std::string > v7_Status, boost::optional< std::string > v8_WorkMethod, bool v9_IsMilestone, boost::optional< int > v10_Priority, std::string v11_ActionID) : IfcTask((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_TaskId)); if (v7_Status) { e->setArgument(6,(*v7_Status)); } else { e->setArgument(6); } if (v8_WorkMethod) { e->setArgument(7,(*v8_WorkMethod)); } else { e->setArgument(7); } e->setArgument(8,(v9_IsMilestone)); if (v10_Priority) { e->setArgument(9,(*v10_Priority)); } else { e->setArgument(9); } e->setArgument(10,(v11_ActionID)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOrganization
bool IfcOrganization::hasId() const { return !data_->getArgument(0)->isNull(); }
std::string IfcOrganization::Id() const { return *data_->getArgument(0); }
void IfcOrganization::setId(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
std::string IfcOrganization::Name() const { return *data_->getArgument(1); }
void IfcOrganization::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcOrganization::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcOrganization::Description() const { return *data_->getArgument(2); }
void IfcOrganization::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcOrganization::hasRoles() const { return !data_->getArgument(3)->isNull(); }
IfcTemplatedEntityList< IfcActorRole >::ptr IfcOrganization::Roles() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcActorRole>(); }
void IfcOrganization::setRoles(IfcTemplatedEntityList< IfcActorRole >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }
bool IfcOrganization::hasAddresses() const { return !data_->getArgument(4)->isNull(); }
IfcTemplatedEntityList< IfcAddress >::ptr IfcOrganization::Addresses() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcAddress>(); }
void IfcOrganization::setAddresses(IfcTemplatedEntityList< IfcAddress >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }

IfcOrganizationRelationship::list::ptr IfcOrganization::IsRelatedBy() const { return data_->getInverse(Type::IfcOrganizationRelationship, 3)->as<IfcOrganizationRelationship>(); }
IfcOrganizationRelationship::list::ptr IfcOrganization::Relates() const { return data_->getInverse(Type::IfcOrganizationRelationship, 2)->as<IfcOrganizationRelationship>(); }
IfcPersonAndOrganization::list::ptr IfcOrganization::Engages() const { return data_->getInverse(Type::IfcPersonAndOrganization, 1)->as<IfcPersonAndOrganization>(); }

const IfcParse::entity& IfcOrganization::declaration() const { return *IfcOrganization_type; }
Type::Enum IfcOrganization::Class() { return Type::IfcOrganization; }
IfcOrganization::IfcOrganization(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcOrganization)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOrganization::IfcOrganization(boost::optional< std::string > v1_Id, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< IfcTemplatedEntityList< IfcActorRole >::ptr > v4_Roles, boost::optional< IfcTemplatedEntityList< IfcAddress >::ptr > v5_Addresses) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Id) { e->setArgument(0,(*v1_Id)); } else { e->setArgument(0); } e->setArgument(1,(v2_Name)); if (v3_Description) { e->setArgument(2,(*v3_Description)); } else { e->setArgument(2); } if (v4_Roles) { e->setArgument(3,(*v4_Roles)->generalize()); } else { e->setArgument(3); } if (v5_Addresses) { e->setArgument(4,(*v5_Addresses)->generalize()); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOrganizationRelationship
std::string IfcOrganizationRelationship::Name() const { return *data_->getArgument(0); }
void IfcOrganizationRelationship::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcOrganizationRelationship::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcOrganizationRelationship::Description() const { return *data_->getArgument(1); }
void IfcOrganizationRelationship::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcOrganization* IfcOrganizationRelationship::RelatingOrganization() const { return (IfcOrganization*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcOrganizationRelationship::setRelatingOrganization(IfcOrganization* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTemplatedEntityList< IfcOrganization >::ptr IfcOrganizationRelationship::RelatedOrganizations() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcOrganization>(); }
void IfcOrganizationRelationship::setRelatedOrganizations(IfcTemplatedEntityList< IfcOrganization >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }


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

// Function implementations for IfcOrientedEdge
IfcEdge* IfcOrientedEdge::EdgeElement() const { return (IfcEdge*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcOrientedEdge::setEdgeElement(IfcEdge* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcOrientedEdge::Orientation() const { return *data_->getArgument(3); }
void IfcOrientedEdge::setOrientation(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcOrientedEdge::declaration() const { return *IfcOrientedEdge_type; }
Type::Enum IfcOrientedEdge::Class() { return Type::IfcOrientedEdge; }
IfcOrientedEdge::IfcOrientedEdge(IfcAbstractEntity* e) : IfcEdge((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOrientedEdge)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOrientedEdge::IfcOrientedEdge(IfcEdge* v3_EdgeElement, bool v4_Orientation) : IfcEdge((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgumentDerived(0); e->setArgumentDerived(1); e->setArgument(2,(v3_EdgeElement)); e->setArgument(3,(v4_Orientation)); data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcOwnerHistory
IfcPersonAndOrganization* IfcOwnerHistory::OwningUser() const { return (IfcPersonAndOrganization*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcOwnerHistory::setOwningUser(IfcPersonAndOrganization* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcApplication* IfcOwnerHistory::OwningApplication() const { return (IfcApplication*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcOwnerHistory::setOwningApplication(IfcApplication* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcOwnerHistory::hasState() const { return !data_->getArgument(2)->isNull(); }
IfcStateEnum::IfcStateEnum IfcOwnerHistory::State() const { return IfcStateEnum::FromString(*data_->getArgument(2)); }
void IfcOwnerHistory::setState(IfcStateEnum::IfcStateEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcStateEnum::ToString(v)); }
IfcChangeActionEnum::IfcChangeActionEnum IfcOwnerHistory::ChangeAction() const { return IfcChangeActionEnum::FromString(*data_->getArgument(3)); }
void IfcOwnerHistory::setChangeAction(IfcChangeActionEnum::IfcChangeActionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v,IfcChangeActionEnum::ToString(v)); }
bool IfcOwnerHistory::hasLastModifiedDate() const { return !data_->getArgument(4)->isNull(); }
int IfcOwnerHistory::LastModifiedDate() const { return *data_->getArgument(4); }
void IfcOwnerHistory::setLastModifiedDate(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcOwnerHistory::hasLastModifyingUser() const { return !data_->getArgument(5)->isNull(); }
IfcPersonAndOrganization* IfcOwnerHistory::LastModifyingUser() const { return (IfcPersonAndOrganization*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcOwnerHistory::setLastModifyingUser(IfcPersonAndOrganization* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcOwnerHistory::hasLastModifyingApplication() const { return !data_->getArgument(6)->isNull(); }
IfcApplication* IfcOwnerHistory::LastModifyingApplication() const { return (IfcApplication*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcOwnerHistory::setLastModifyingApplication(IfcApplication* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
int IfcOwnerHistory::CreationDate() const { return *data_->getArgument(7); }
void IfcOwnerHistory::setCreationDate(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcOwnerHistory::declaration() const { return *IfcOwnerHistory_type; }
Type::Enum IfcOwnerHistory::Class() { return Type::IfcOwnerHistory; }
IfcOwnerHistory::IfcOwnerHistory(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcOwnerHistory)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOwnerHistory::IfcOwnerHistory(IfcPersonAndOrganization* v1_OwningUser, IfcApplication* v2_OwningApplication, boost::optional< IfcStateEnum::IfcStateEnum > v3_State, IfcChangeActionEnum::IfcChangeActionEnum v4_ChangeAction, boost::optional< int > v5_LastModifiedDate, IfcPersonAndOrganization* v6_LastModifyingUser, IfcApplication* v7_LastModifyingApplication, int v8_CreationDate) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_OwningUser)); e->setArgument(1,(v2_OwningApplication)); if (v3_State) { e->setArgument(2,*v3_State,IfcStateEnum::ToString(*v3_State)); } else { e->setArgument(2); } e->setArgument(3,v4_ChangeAction,IfcChangeActionEnum::ToString(v4_ChangeAction)); if (v5_LastModifiedDate) { e->setArgument(4,(*v5_LastModifiedDate)); } else { e->setArgument(4); } e->setArgument(5,(v6_LastModifyingUser)); e->setArgument(6,(v7_LastModifyingApplication)); e->setArgument(7,(v8_CreationDate)); data_ = e; EntityBuffer::Add(this); }

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


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

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


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

// Function implementations for IfcPerformanceHistory
std::string IfcPerformanceHistory::LifeCyclePhase() const { return *data_->getArgument(5); }
void IfcPerformanceHistory::setLifeCyclePhase(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


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

// Function implementations for IfcPermeableCoveringProperties
IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum IfcPermeableCoveringProperties::OperationType() const { return IfcPermeableCoveringOperationEnum::FromString(*data_->getArgument(4)); }
void IfcPermeableCoveringProperties::setOperationType(IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcPermeableCoveringOperationEnum::ToString(v)); }
IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum IfcPermeableCoveringProperties::PanelPosition() const { return IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); }
void IfcPermeableCoveringProperties::setPanelPosition(IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcWindowPanelPositionEnum::ToString(v)); }
bool IfcPermeableCoveringProperties::hasFrameDepth() const { return !data_->getArgument(6)->isNull(); }
double IfcPermeableCoveringProperties::FrameDepth() const { return *data_->getArgument(6); }
void IfcPermeableCoveringProperties::setFrameDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcPermeableCoveringProperties::hasFrameThickness() const { return !data_->getArgument(7)->isNull(); }
double IfcPermeableCoveringProperties::FrameThickness() const { return *data_->getArgument(7); }
void IfcPermeableCoveringProperties::setFrameThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcPermeableCoveringProperties::hasShapeAspectStyle() const { return !data_->getArgument(8)->isNull(); }
IfcShapeAspect* IfcPermeableCoveringProperties::ShapeAspectStyle() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcPermeableCoveringProperties::setShapeAspectStyle(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcPermeableCoveringProperties::declaration() const { return *IfcPermeableCoveringProperties_type; }
Type::Enum IfcPermeableCoveringProperties::Class() { return Type::IfcPermeableCoveringProperties; }
IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPermeableCoveringProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum v5_OperationType, IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, IfcShapeAspect* v9_ShapeAspectStyle) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,v5_OperationType,IfcPermeableCoveringOperationEnum::ToString(v5_OperationType)); e->setArgument(5,v6_PanelPosition,IfcWindowPanelPositionEnum::ToString(v6_PanelPosition)); if (v7_FrameDepth) { e->setArgument(6,(*v7_FrameDepth)); } else { e->setArgument(6); } if (v8_FrameThickness) { e->setArgument(7,(*v8_FrameThickness)); } else { e->setArgument(7); } e->setArgument(8,(v9_ShapeAspectStyle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPermit
std::string IfcPermit::PermitID() const { return *data_->getArgument(5); }
void IfcPermit::setPermitID(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


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

// Function implementations for IfcPerson
bool IfcPerson::hasId() const { return !data_->getArgument(0)->isNull(); }
std::string IfcPerson::Id() const { return *data_->getArgument(0); }
void IfcPerson::setId(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcPerson::hasFamilyName() const { return !data_->getArgument(1)->isNull(); }
std::string IfcPerson::FamilyName() const { return *data_->getArgument(1); }
void IfcPerson::setFamilyName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcPerson::hasGivenName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcPerson::GivenName() const { return *data_->getArgument(2); }
void IfcPerson::setGivenName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPerson::hasMiddleNames() const { return !data_->getArgument(3)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcPerson::MiddleNames() const { return *data_->getArgument(3); }
void IfcPerson::setMiddleNames(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPerson::hasPrefixTitles() const { return !data_->getArgument(4)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcPerson::PrefixTitles() const { return *data_->getArgument(4); }
void IfcPerson::setPrefixTitles(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcPerson::hasSuffixTitles() const { return !data_->getArgument(5)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcPerson::SuffixTitles() const { return *data_->getArgument(5); }
void IfcPerson::setSuffixTitles(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcPerson::hasRoles() const { return !data_->getArgument(6)->isNull(); }
IfcTemplatedEntityList< IfcActorRole >::ptr IfcPerson::Roles() const { IfcEntityList::ptr es = *data_->getArgument(6); return es->as<IfcActorRole>(); }
void IfcPerson::setRoles(IfcTemplatedEntityList< IfcActorRole >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v->generalize()); }
bool IfcPerson::hasAddresses() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcAddress >::ptr IfcPerson::Addresses() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcAddress>(); }
void IfcPerson::setAddresses(IfcTemplatedEntityList< IfcAddress >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }

IfcPersonAndOrganization::list::ptr IfcPerson::EngagedIn() const { return data_->getInverse(Type::IfcPersonAndOrganization, 0)->as<IfcPersonAndOrganization>(); }

const IfcParse::entity& IfcPerson::declaration() const { return *IfcPerson_type; }
Type::Enum IfcPerson::Class() { return Type::IfcPerson; }
IfcPerson::IfcPerson(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPerson)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPerson::IfcPerson(boost::optional< std::string > v1_Id, boost::optional< std::string > v2_FamilyName, boost::optional< std::string > v3_GivenName, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_MiddleNames, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_PrefixTitles, boost::optional< std::vector< std::string > /*[1:?]*/ > v6_SuffixTitles, boost::optional< IfcTemplatedEntityList< IfcActorRole >::ptr > v7_Roles, boost::optional< IfcTemplatedEntityList< IfcAddress >::ptr > v8_Addresses) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Id) { e->setArgument(0,(*v1_Id)); } else { e->setArgument(0); } if (v2_FamilyName) { e->setArgument(1,(*v2_FamilyName)); } else { e->setArgument(1); } if (v3_GivenName) { e->setArgument(2,(*v3_GivenName)); } else { e->setArgument(2); } if (v4_MiddleNames) { e->setArgument(3,(*v4_MiddleNames)); } else { e->setArgument(3); } if (v5_PrefixTitles) { e->setArgument(4,(*v5_PrefixTitles)); } else { e->setArgument(4); } if (v6_SuffixTitles) { e->setArgument(5,(*v6_SuffixTitles)); } else { e->setArgument(5); } if (v7_Roles) { e->setArgument(6,(*v7_Roles)->generalize()); } else { e->setArgument(6); } if (v8_Addresses) { e->setArgument(7,(*v8_Addresses)->generalize()); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPersonAndOrganization
IfcPerson* IfcPersonAndOrganization::ThePerson() const { return (IfcPerson*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcPersonAndOrganization::setThePerson(IfcPerson* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcOrganization* IfcPersonAndOrganization::TheOrganization() const { return (IfcOrganization*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcPersonAndOrganization::setTheOrganization(IfcOrganization* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcPersonAndOrganization::hasRoles() const { return !data_->getArgument(2)->isNull(); }
IfcTemplatedEntityList< IfcActorRole >::ptr IfcPersonAndOrganization::Roles() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcActorRole>(); }
void IfcPersonAndOrganization::setRoles(IfcTemplatedEntityList< IfcActorRole >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }


const IfcParse::entity& IfcPersonAndOrganization::declaration() const { return *IfcPersonAndOrganization_type; }
Type::Enum IfcPersonAndOrganization::Class() { return Type::IfcPersonAndOrganization; }
IfcPersonAndOrganization::IfcPersonAndOrganization(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPersonAndOrganization)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPersonAndOrganization::IfcPersonAndOrganization(IfcPerson* v1_ThePerson, IfcOrganization* v2_TheOrganization, boost::optional< IfcTemplatedEntityList< IfcActorRole >::ptr > v3_Roles) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ThePerson)); e->setArgument(1,(v2_TheOrganization)); if (v3_Roles) { e->setArgument(2,(*v3_Roles)->generalize()); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPhysicalComplexQuantity
IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr IfcPhysicalComplexQuantity::HasQuantities() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcPhysicalQuantity>(); }
void IfcPhysicalComplexQuantity::setHasQuantities(IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }
std::string IfcPhysicalComplexQuantity::Discrimination() const { return *data_->getArgument(3); }
void IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPhysicalComplexQuantity::hasQuality() const { return !data_->getArgument(4)->isNull(); }
std::string IfcPhysicalComplexQuantity::Quality() const { return *data_->getArgument(4); }
void IfcPhysicalComplexQuantity::setQuality(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcPhysicalComplexQuantity::hasUsage() const { return !data_->getArgument(5)->isNull(); }
std::string IfcPhysicalComplexQuantity::Usage() const { return *data_->getArgument(5); }
void IfcPhysicalComplexQuantity::setUsage(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


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

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

IfcPhysicalComplexQuantity::list::ptr IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(Type::IfcPhysicalComplexQuantity, 2)->as<IfcPhysicalComplexQuantity>(); }

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

// Function implementations for IfcPhysicalSimpleQuantity
bool IfcPhysicalSimpleQuantity::hasUnit() const { return !data_->getArgument(2)->isNull(); }
IfcNamedUnit* IfcPhysicalSimpleQuantity::Unit() const { return (IfcNamedUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPhysicalSimpleQuantity::setUnit(IfcNamedUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


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

// Function implementations for IfcPile
IfcPileTypeEnum::IfcPileTypeEnum IfcPile::PredefinedType() const { return IfcPileTypeEnum::FromString(*data_->getArgument(8)); }
void IfcPile::setPredefinedType(IfcPileTypeEnum::IfcPileTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcPileTypeEnum::ToString(v)); }
bool IfcPile::hasConstructionType() const { return !data_->getArgument(9)->isNull(); }
IfcPileConstructionEnum::IfcPileConstructionEnum IfcPile::ConstructionType() const { return IfcPileConstructionEnum::FromString(*data_->getArgument(9)); }
void IfcPile::setConstructionType(IfcPileConstructionEnum::IfcPileConstructionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcPileConstructionEnum::ToString(v)); }


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

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


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

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


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

// Function implementations for IfcPixelTexture
int IfcPixelTexture::Width() const { return *data_->getArgument(4); }
void IfcPixelTexture::setWidth(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
int IfcPixelTexture::Height() const { return *data_->getArgument(5); }
void IfcPixelTexture::setHeight(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
int IfcPixelTexture::ColourComponents() const { return *data_->getArgument(6); }
void IfcPixelTexture::setColourComponents(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
std::vector< boost::dynamic_bitset<> > /*[1:?]*/ IfcPixelTexture::Pixel() const { return *data_->getArgument(7); }
void IfcPixelTexture::setPixel(std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcPixelTexture::declaration() const { return *IfcPixelTexture_type; }
Type::Enum IfcPixelTexture::Class() { return Type::IfcPixelTexture; }
IfcPixelTexture::IfcPixelTexture(IfcAbstractEntity* e) : IfcSurfaceTexture((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPixelTexture)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPixelTexture::IfcPixelTexture(bool v1_RepeatS, bool v2_RepeatT, IfcSurfaceTextureEnum::IfcSurfaceTextureEnum v3_TextureType, IfcCartesianTransformationOperator2D* v4_TextureTransform, int v5_Width, int v6_Height, int v7_ColourComponents, std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v8_Pixel) : IfcSurfaceTexture((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RepeatS)); e->setArgument(1,(v2_RepeatT)); e->setArgument(2,v3_TextureType,IfcSurfaceTextureEnum::ToString(v3_TextureType)); e->setArgument(3,(v4_TextureTransform)); e->setArgument(4,(v5_Width)); e->setArgument(5,(v6_Height)); e->setArgument(6,(v7_ColourComponents)); e->setArgument(7,(v8_Pixel)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPlacement
IfcCartesianPoint* IfcPlacement::Location() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcPlacement::setLocation(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


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

// Function implementations for IfcPlanarBox
IfcAxis2Placement* IfcPlanarBox::Placement() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPlanarBox::setPlacement(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcPlanarBox::declaration() const { return *IfcPlanarBox_type; }
Type::Enum IfcPlanarBox::Class() { return Type::IfcPlanarBox; }
IfcPlanarBox::IfcPlanarBox(IfcAbstractEntity* e) : IfcPlanarExtent((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPlanarBox)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPlanarBox::IfcPlanarBox(double v1_SizeInX, double v2_SizeInY, IfcAxis2Placement* v3_Placement) : IfcPlanarExtent((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SizeInX)); e->setArgument(1,(v2_SizeInY)); e->setArgument(2,(v3_Placement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPlanarExtent
double IfcPlanarExtent::SizeInX() const { return *data_->getArgument(0); }
void IfcPlanarExtent::setSizeInX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcPlanarExtent::SizeInY() const { return *data_->getArgument(1); }
void IfcPlanarExtent::setSizeInY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


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

// Function implementations for IfcPlane


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

// Function implementations for IfcPlate


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

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


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

// Function implementations for IfcPoint


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

// Function implementations for IfcPointOnCurve
IfcCurve* IfcPointOnCurve::BasisCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcPointOnCurve::setBasisCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcPointOnCurve::PointParameter() const { return *data_->getArgument(1); }
void IfcPointOnCurve::setPointParameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcPointOnCurve::declaration() const { return *IfcPointOnCurve_type; }
Type::Enum IfcPointOnCurve::Class() { return Type::IfcPointOnCurve; }
IfcPointOnCurve::IfcPointOnCurve(IfcAbstractEntity* e) : IfcPoint((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPointOnCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPointOnCurve::IfcPointOnCurve(IfcCurve* v1_BasisCurve, double v2_PointParameter) : IfcPoint((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisCurve)); e->setArgument(1,(v2_PointParameter)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPointOnSurface
IfcSurface* IfcPointOnSurface::BasisSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcPointOnSurface::setBasisSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcPointOnSurface::PointParameterU() const { return *data_->getArgument(1); }
void IfcPointOnSurface::setPointParameterU(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcPointOnSurface::PointParameterV() const { return *data_->getArgument(2); }
void IfcPointOnSurface::setPointParameterV(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcPointOnSurface::declaration() const { return *IfcPointOnSurface_type; }
Type::Enum IfcPointOnSurface::Class() { return Type::IfcPointOnSurface; }
IfcPointOnSurface::IfcPointOnSurface(IfcAbstractEntity* e) : IfcPoint((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPointOnSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPointOnSurface::IfcPointOnSurface(IfcSurface* v1_BasisSurface, double v2_PointParameterU, double v3_PointParameterV) : IfcPoint((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisSurface)); e->setArgument(1,(v2_PointParameterU)); e->setArgument(2,(v3_PointParameterV)); data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcPolygonalBoundedHalfSpace
IfcAxis2Placement3D* IfcPolygonalBoundedHalfSpace::Position() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPolygonalBoundedHalfSpace::setPosition(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcBoundedCurve* IfcPolygonalBoundedHalfSpace::PolygonalBoundary() const { return (IfcBoundedCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPolygonalBoundedHalfSpace::setPolygonalBoundary(IfcBoundedCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


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

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


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

// Function implementations for IfcPort

IfcRelConnectsPortToElement::list::ptr IfcPort::ContainedIn() const { return data_->getInverse(Type::IfcRelConnectsPortToElement, 4)->as<IfcRelConnectsPortToElement>(); }
IfcRelConnectsPorts::list::ptr IfcPort::ConnectedFrom() const { return data_->getInverse(Type::IfcRelConnectsPorts, 5)->as<IfcRelConnectsPorts>(); }
IfcRelConnectsPorts::list::ptr IfcPort::ConnectedTo() const { return data_->getInverse(Type::IfcRelConnectsPorts, 4)->as<IfcRelConnectsPorts>(); }

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

// Function implementations for IfcPostalAddress
bool IfcPostalAddress::hasInternalLocation() const { return !data_->getArgument(3)->isNull(); }
std::string IfcPostalAddress::InternalLocation() const { return *data_->getArgument(3); }
void IfcPostalAddress::setInternalLocation(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPostalAddress::hasAddressLines() const { return !data_->getArgument(4)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcPostalAddress::AddressLines() const { return *data_->getArgument(4); }
void IfcPostalAddress::setAddressLines(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcPostalAddress::hasPostalBox() const { return !data_->getArgument(5)->isNull(); }
std::string IfcPostalAddress::PostalBox() const { return *data_->getArgument(5); }
void IfcPostalAddress::setPostalBox(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcPostalAddress::hasTown() const { return !data_->getArgument(6)->isNull(); }
std::string IfcPostalAddress::Town() const { return *data_->getArgument(6); }
void IfcPostalAddress::setTown(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcPostalAddress::hasRegion() const { return !data_->getArgument(7)->isNull(); }
std::string IfcPostalAddress::Region() const { return *data_->getArgument(7); }
void IfcPostalAddress::setRegion(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcPostalAddress::hasPostalCode() const { return !data_->getArgument(8)->isNull(); }
std::string IfcPostalAddress::PostalCode() const { return *data_->getArgument(8); }
void IfcPostalAddress::setPostalCode(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcPostalAddress::hasCountry() const { return !data_->getArgument(9)->isNull(); }
std::string IfcPostalAddress::Country() const { return *data_->getArgument(9); }
void IfcPostalAddress::setCountry(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcPostalAddress::declaration() const { return *IfcPostalAddress_type; }
Type::Enum IfcPostalAddress::Class() { return Type::IfcPostalAddress; }
IfcPostalAddress::IfcPostalAddress(IfcAbstractEntity* e) : IfcAddress((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPostalAddress)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPostalAddress::IfcPostalAddress(boost::optional< IfcAddressTypeEnum::IfcAddressTypeEnum > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::string > v4_InternalLocation, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_AddressLines, boost::optional< std::string > v6_PostalBox, boost::optional< std::string > v7_Town, boost::optional< std::string > v8_Region, boost::optional< std::string > v9_PostalCode, boost::optional< std::string > v10_Country) : IfcAddress((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Purpose) { e->setArgument(0,*v1_Purpose,IfcAddressTypeEnum::ToString(*v1_Purpose)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_UserDefinedPurpose) { e->setArgument(2,(*v3_UserDefinedPurpose)); } else { e->setArgument(2); } if (v4_InternalLocation) { e->setArgument(3,(*v4_InternalLocation)); } else { e->setArgument(3); } if (v5_AddressLines) { e->setArgument(4,(*v5_AddressLines)); } else { e->setArgument(4); } if (v6_PostalBox) { e->setArgument(5,(*v6_PostalBox)); } else { e->setArgument(5); } if (v7_Town) { e->setArgument(6,(*v7_Town)); } else { e->setArgument(6); } if (v8_Region) { e->setArgument(7,(*v8_Region)); } else { e->setArgument(7); } if (v9_PostalCode) { e->setArgument(8,(*v9_PostalCode)); } else { e->setArgument(8); } if (v10_Country) { e->setArgument(9,(*v10_Country)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPreDefinedColour


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

// Function implementations for IfcPreDefinedCurveFont


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

// Function implementations for IfcPreDefinedDimensionSymbol


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

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


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

// Function implementations for IfcPreDefinedPointMarkerSymbol


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

// Function implementations for IfcPreDefinedSymbol


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

// Function implementations for IfcPreDefinedTerminatorSymbol


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

// Function implementations for IfcPreDefinedTextFont


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

// Function implementations for IfcPresentationLayerAssignment
std::string IfcPresentationLayerAssignment::Name() const { return *data_->getArgument(0); }
void IfcPresentationLayerAssignment::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcPresentationLayerAssignment::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcPresentationLayerAssignment::Description() const { return *data_->getArgument(1); }
void IfcPresentationLayerAssignment::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcEntityList::ptr IfcPresentationLayerAssignment::AssignedItems() const { return *data_->getArgument(2); }
void IfcPresentationLayerAssignment::setAssignedItems(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPresentationLayerAssignment::hasIdentifier() const { return !data_->getArgument(3)->isNull(); }
std::string IfcPresentationLayerAssignment::Identifier() const { return *data_->getArgument(3); }
void IfcPresentationLayerAssignment::setIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


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

// Function implementations for IfcPresentationLayerWithStyle
boost::logic::tribool IfcPresentationLayerWithStyle::LayerOn() const { return *data_->getArgument(4); }
void IfcPresentationLayerWithStyle::setLayerOn(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
boost::logic::tribool IfcPresentationLayerWithStyle::LayerFrozen() const { return *data_->getArgument(5); }
void IfcPresentationLayerWithStyle::setLayerFrozen(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
boost::logic::tribool IfcPresentationLayerWithStyle::LayerBlocked() const { return *data_->getArgument(6); }
void IfcPresentationLayerWithStyle::setLayerBlocked(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcEntityList::ptr IfcPresentationLayerWithStyle::LayerStyles() const { return *data_->getArgument(7); }
void IfcPresentationLayerWithStyle::setLayerStyles(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcPresentationLayerWithStyle::declaration() const { return *IfcPresentationLayerWithStyle_type; }
Type::Enum IfcPresentationLayerWithStyle::Class() { return Type::IfcPresentationLayerWithStyle; }
IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(IfcAbstractEntity* e) : IfcPresentationLayerAssignment((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPresentationLayerWithStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier, boost::logic::tribool v5_LayerOn, boost::logic::tribool v6_LayerFrozen, boost::logic::tribool v7_LayerBlocked, IfcEntityList::ptr v8_LayerStyles) : IfcPresentationLayerAssignment((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_AssignedItems)); if (v4_Identifier) { e->setArgument(3,(*v4_Identifier)); } else { e->setArgument(3); } e->setArgument(4,(v5_LayerOn)); e->setArgument(5,(v6_LayerFrozen)); e->setArgument(6,(v7_LayerBlocked)); e->setArgument(7,(v8_LayerStyles)); data_ = e; EntityBuffer::Add(this); }

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


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

// Function implementations for IfcPresentationStyleAssignment
IfcEntityList::ptr IfcPresentationStyleAssignment::Styles() const { return *data_->getArgument(0); }
void IfcPresentationStyleAssignment::setStyles(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


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

// Function implementations for IfcProcedure
std::string IfcProcedure::ProcedureID() const { return *data_->getArgument(5); }
void IfcProcedure::setProcedureID(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcProcedureTypeEnum::IfcProcedureTypeEnum IfcProcedure::ProcedureType() const { return IfcProcedureTypeEnum::FromString(*data_->getArgument(6)); }
void IfcProcedure::setProcedureType(IfcProcedureTypeEnum::IfcProcedureTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcProcedureTypeEnum::ToString(v)); }
bool IfcProcedure::hasUserDefinedProcedureType() const { return !data_->getArgument(7)->isNull(); }
std::string IfcProcedure::UserDefinedProcedureType() const { return *data_->getArgument(7); }
void IfcProcedure::setUserDefinedProcedureType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


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

// Function implementations for IfcProcess

IfcRelAssignsToProcess::list::ptr IfcProcess::OperatesOn() const { return data_->getInverse(Type::IfcRelAssignsToProcess, 6)->as<IfcRelAssignsToProcess>(); }
IfcRelSequence::list::ptr IfcProcess::IsSuccessorFrom() const { return data_->getInverse(Type::IfcRelSequence, 5)->as<IfcRelSequence>(); }
IfcRelSequence::list::ptr IfcProcess::IsPredecessorTo() const { return data_->getInverse(Type::IfcRelSequence, 4)->as<IfcRelSequence>(); }

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

// Function implementations for IfcProduct
bool IfcProduct::hasObjectPlacement() const { return !data_->getArgument(5)->isNull(); }
IfcObjectPlacement* IfcProduct::ObjectPlacement() const { return (IfcObjectPlacement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcProduct::setObjectPlacement(IfcObjectPlacement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcProduct::hasRepresentation() const { return !data_->getArgument(6)->isNull(); }
IfcProductRepresentation* IfcProduct::Representation() const { return (IfcProductRepresentation*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcProduct::setRepresentation(IfcProductRepresentation* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }

IfcRelAssignsToProduct::list::ptr IfcProduct::ReferencedBy() const { return data_->getInverse(Type::IfcRelAssignsToProduct, 6)->as<IfcRelAssignsToProduct>(); }

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

// Function implementations for IfcProductDefinitionShape

IfcProduct::list::ptr IfcProductDefinitionShape::ShapeOfProduct() const { return data_->getInverse(Type::IfcProduct, 6)->as<IfcProduct>(); }
IfcShapeAspect::list::ptr IfcProductDefinitionShape::HasShapeAspects() const { return data_->getInverse(Type::IfcShapeAspect, 4)->as<IfcShapeAspect>(); }

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

// Function implementations for IfcProductRepresentation
bool IfcProductRepresentation::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcProductRepresentation::Name() const { return *data_->getArgument(0); }
void IfcProductRepresentation::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcProductRepresentation::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcProductRepresentation::Description() const { return *data_->getArgument(1); }
void IfcProductRepresentation::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcTemplatedEntityList< IfcRepresentation >::ptr IfcProductRepresentation::Representations() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcRepresentation>(); }
void IfcProductRepresentation::setRepresentations(IfcTemplatedEntityList< IfcRepresentation >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }


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

// Function implementations for IfcProductsOfCombustionProperties
bool IfcProductsOfCombustionProperties::hasSpecificHeatCapacity() const { return !data_->getArgument(1)->isNull(); }
double IfcProductsOfCombustionProperties::SpecificHeatCapacity() const { return *data_->getArgument(1); }
void IfcProductsOfCombustionProperties::setSpecificHeatCapacity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcProductsOfCombustionProperties::hasN20Content() const { return !data_->getArgument(2)->isNull(); }
double IfcProductsOfCombustionProperties::N20Content() const { return *data_->getArgument(2); }
void IfcProductsOfCombustionProperties::setN20Content(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcProductsOfCombustionProperties::hasCOContent() const { return !data_->getArgument(3)->isNull(); }
double IfcProductsOfCombustionProperties::COContent() const { return *data_->getArgument(3); }
void IfcProductsOfCombustionProperties::setCOContent(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcProductsOfCombustionProperties::hasCO2Content() const { return !data_->getArgument(4)->isNull(); }
double IfcProductsOfCombustionProperties::CO2Content() const { return *data_->getArgument(4); }
void IfcProductsOfCombustionProperties::setCO2Content(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcProductsOfCombustionProperties::declaration() const { return *IfcProductsOfCombustionProperties_type; }
Type::Enum IfcProductsOfCombustionProperties::Class() { return Type::IfcProductsOfCombustionProperties; }
IfcProductsOfCombustionProperties::IfcProductsOfCombustionProperties(IfcAbstractEntity* e) : IfcMaterialProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProductsOfCombustionProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProductsOfCombustionProperties::IfcProductsOfCombustionProperties(IfcMaterial* v1_Material, boost::optional< double > v2_SpecificHeatCapacity, boost::optional< double > v3_N20Content, boost::optional< double > v4_COContent, boost::optional< double > v5_CO2Content) : IfcMaterialProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); if (v2_SpecificHeatCapacity) { e->setArgument(1,(*v2_SpecificHeatCapacity)); } else { e->setArgument(1); } if (v3_N20Content) { e->setArgument(2,(*v3_N20Content)); } else { e->setArgument(2); } if (v4_COContent) { e->setArgument(3,(*v4_COContent)); } else { e->setArgument(3); } if (v5_CO2Content) { e->setArgument(4,(*v5_CO2Content)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProfileDef
IfcProfileTypeEnum::IfcProfileTypeEnum IfcProfileDef::ProfileType() const { return IfcProfileTypeEnum::FromString(*data_->getArgument(0)); }
void IfcProfileDef::setProfileType(IfcProfileTypeEnum::IfcProfileTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcProfileTypeEnum::ToString(v)); }
bool IfcProfileDef::hasProfileName() const { return !data_->getArgument(1)->isNull(); }
std::string IfcProfileDef::ProfileName() const { return *data_->getArgument(1); }
void IfcProfileDef::setProfileName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


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

// Function implementations for IfcProfileProperties
bool IfcProfileProperties::hasProfileName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcProfileProperties::ProfileName() const { return *data_->getArgument(0); }
void IfcProfileProperties::setProfileName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcProfileProperties::hasProfileDefinition() const { return !data_->getArgument(1)->isNull(); }
IfcProfileDef* IfcProfileProperties::ProfileDefinition() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcProfileProperties::setProfileDefinition(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


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

// Function implementations for IfcProject
bool IfcProject::hasLongName() const { return !data_->getArgument(5)->isNull(); }
std::string IfcProject::LongName() const { return *data_->getArgument(5); }
void IfcProject::setLongName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcProject::hasPhase() const { return !data_->getArgument(6)->isNull(); }
std::string IfcProject::Phase() const { return *data_->getArgument(6); }
void IfcProject::setPhase(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcTemplatedEntityList< IfcRepresentationContext >::ptr IfcProject::RepresentationContexts() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcRepresentationContext>(); }
void IfcProject::setRepresentationContexts(IfcTemplatedEntityList< IfcRepresentationContext >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
IfcUnitAssignment* IfcProject::UnitsInContext() const { return (IfcUnitAssignment*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcProject::setUnitsInContext(IfcUnitAssignment* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcProject::declaration() const { return *IfcProject_type; }
Type::Enum IfcProject::Class() { return Type::IfcProject; }
IfcProject::IfcProject(IfcAbstractEntity* e) : IfcObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProject)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProject::IfcProject(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, IfcTemplatedEntityList< IfcRepresentationContext >::ptr v8_RepresentationContexts, IfcUnitAssignment* v9_UnitsInContext) : IfcObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_LongName) { e->setArgument(5,(*v6_LongName)); } else { e->setArgument(5); } if (v7_Phase) { e->setArgument(6,(*v7_Phase)); } else { e->setArgument(6); } e->setArgument(7,(v8_RepresentationContexts)->generalize()); e->setArgument(8,(v9_UnitsInContext)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProjectOrder
std::string IfcProjectOrder::ID() const { return *data_->getArgument(5); }
void IfcProjectOrder::setID(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum IfcProjectOrder::PredefinedType() const { return IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); }
void IfcProjectOrder::setPredefinedType(IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcProjectOrderTypeEnum::ToString(v)); }
bool IfcProjectOrder::hasStatus() const { return !data_->getArgument(7)->isNull(); }
std::string IfcProjectOrder::Status() const { return *data_->getArgument(7); }
void IfcProjectOrder::setStatus(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


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

// Function implementations for IfcProjectOrderRecord
IfcTemplatedEntityList< IfcRelAssignsToProjectOrder >::ptr IfcProjectOrderRecord::Records() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcRelAssignsToProjectOrder>(); }
void IfcProjectOrderRecord::setRecords(IfcTemplatedEntityList< IfcRelAssignsToProjectOrder >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }
IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordTypeEnum IfcProjectOrderRecord::PredefinedType() const { return IfcProjectOrderRecordTypeEnum::FromString(*data_->getArgument(6)); }
void IfcProjectOrderRecord::setPredefinedType(IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcProjectOrderRecordTypeEnum::ToString(v)); }


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

// Function implementations for IfcProjectionCurve


const IfcParse::entity& IfcProjectionCurve::declaration() const { return *IfcProjectionCurve_type; }
Type::Enum IfcProjectionCurve::Class() { return Type::IfcProjectionCurve; }
IfcProjectionCurve::IfcProjectionCurve(IfcAbstractEntity* e) : IfcAnnotationCurveOccurrence((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProjectionCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProjectionCurve::IfcProjectionCurve(IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcAnnotationCurveOccurrence((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProjectionElement


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

// Function implementations for IfcProperty
std::string IfcProperty::Name() const { return *data_->getArgument(0); }
void IfcProperty::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcProperty::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcProperty::Description() const { return *data_->getArgument(1); }
void IfcProperty::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }

IfcPropertyDependencyRelationship::list::ptr IfcProperty::PropertyForDependance() const { return data_->getInverse(Type::IfcPropertyDependencyRelationship, 0)->as<IfcPropertyDependencyRelationship>(); }
IfcPropertyDependencyRelationship::list::ptr IfcProperty::PropertyDependsOn() const { return data_->getInverse(Type::IfcPropertyDependencyRelationship, 1)->as<IfcPropertyDependencyRelationship>(); }
IfcComplexProperty::list::ptr IfcProperty::PartOfComplex() const { return data_->getInverse(Type::IfcComplexProperty, 3)->as<IfcComplexProperty>(); }

const IfcParse::entity& IfcProperty::declaration() const { return *IfcProperty_type; }
Type::Enum IfcProperty::Class() { return Type::IfcProperty; }
IfcProperty::IfcProperty(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcProperty)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProperty::IfcProperty(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyBoundedValue
bool IfcPropertyBoundedValue::hasUpperBoundValue() const { return !data_->getArgument(2)->isNull(); }
IfcValue* IfcPropertyBoundedValue::UpperBoundValue() const { return (IfcValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPropertyBoundedValue::setUpperBoundValue(IfcValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertyBoundedValue::hasLowerBoundValue() const { return !data_->getArgument(3)->isNull(); }
IfcValue* IfcPropertyBoundedValue::LowerBoundValue() const { return (IfcValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPropertyBoundedValue::setLowerBoundValue(IfcValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPropertyBoundedValue::hasUnit() const { return !data_->getArgument(4)->isNull(); }
IfcUnit* IfcPropertyBoundedValue::Unit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcPropertyBoundedValue::setUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcPropertyBoundedValue::declaration() const { return *IfcPropertyBoundedValue_type; }
Type::Enum IfcPropertyBoundedValue::Class() { return Type::IfcPropertyBoundedValue; }
IfcPropertyBoundedValue::IfcPropertyBoundedValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyBoundedValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyBoundedValue::IfcPropertyBoundedValue(std::string v1_Name, boost::optional< std::string > v2_Description, IfcValue* v3_UpperBoundValue, IfcValue* v4_LowerBoundValue, IfcUnit* v5_Unit) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_UpperBoundValue)); e->setArgument(3,(v4_LowerBoundValue)); e->setArgument(4,(v5_Unit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyConstraintRelationship
IfcConstraint* IfcPropertyConstraintRelationship::RelatingConstraint() const { return (IfcConstraint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcPropertyConstraintRelationship::setRelatingConstraint(IfcConstraint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcProperty >::ptr IfcPropertyConstraintRelationship::RelatedProperties() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcProperty>(); }
void IfcPropertyConstraintRelationship::setRelatedProperties(IfcTemplatedEntityList< IfcProperty >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
bool IfcPropertyConstraintRelationship::hasName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcPropertyConstraintRelationship::Name() const { return *data_->getArgument(2); }
void IfcPropertyConstraintRelationship::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertyConstraintRelationship::hasDescription() const { return !data_->getArgument(3)->isNull(); }
std::string IfcPropertyConstraintRelationship::Description() const { return *data_->getArgument(3); }
void IfcPropertyConstraintRelationship::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPropertyConstraintRelationship::declaration() const { return *IfcPropertyConstraintRelationship_type; }
Type::Enum IfcPropertyConstraintRelationship::Class() { return Type::IfcPropertyConstraintRelationship; }
IfcPropertyConstraintRelationship::IfcPropertyConstraintRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPropertyConstraintRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyConstraintRelationship::IfcPropertyConstraintRelationship(IfcConstraint* v1_RelatingConstraint, IfcTemplatedEntityList< IfcProperty >::ptr v2_RelatedProperties, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RelatingConstraint)); e->setArgument(1,(v2_RelatedProperties)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyDefinition

IfcRelAssociates::list::ptr IfcPropertyDefinition::HasAssociations() const { return data_->getInverse(Type::IfcRelAssociates, 4)->as<IfcRelAssociates>(); }

const IfcParse::entity& IfcPropertyDefinition::declaration() const { return *IfcPropertyDefinition_type; }
Type::Enum IfcPropertyDefinition::Class() { return Type::IfcPropertyDefinition; }
IfcPropertyDefinition::IfcPropertyDefinition(IfcAbstractEntity* e) : IfcRoot((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyDefinition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyDefinition::IfcPropertyDefinition(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyDependencyRelationship
IfcProperty* IfcPropertyDependencyRelationship::DependingProperty() const { return (IfcProperty*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcPropertyDependencyRelationship::setDependingProperty(IfcProperty* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcProperty* IfcPropertyDependencyRelationship::DependantProperty() const { return (IfcProperty*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcPropertyDependencyRelationship::setDependantProperty(IfcProperty* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcPropertyDependencyRelationship::hasName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcPropertyDependencyRelationship::Name() const { return *data_->getArgument(2); }
void IfcPropertyDependencyRelationship::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertyDependencyRelationship::hasDescription() const { return !data_->getArgument(3)->isNull(); }
std::string IfcPropertyDependencyRelationship::Description() const { return *data_->getArgument(3); }
void IfcPropertyDependencyRelationship::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPropertyDependencyRelationship::hasExpression() const { return !data_->getArgument(4)->isNull(); }
std::string IfcPropertyDependencyRelationship::Expression() const { return *data_->getArgument(4); }
void IfcPropertyDependencyRelationship::setExpression(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcPropertyDependencyRelationship::declaration() const { return *IfcPropertyDependencyRelationship_type; }
Type::Enum IfcPropertyDependencyRelationship::Class() { return Type::IfcPropertyDependencyRelationship; }
IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPropertyDependencyRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(IfcProperty* v1_DependingProperty, IfcProperty* v2_DependantProperty, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_Expression) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_DependingProperty)); e->setArgument(1,(v2_DependantProperty)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_Expression) { e->setArgument(4,(*v5_Expression)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyEnumeratedValue
IfcEntityList::ptr IfcPropertyEnumeratedValue::EnumerationValues() const { return *data_->getArgument(2); }
void IfcPropertyEnumeratedValue::setEnumerationValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertyEnumeratedValue::hasEnumerationReference() const { return !data_->getArgument(3)->isNull(); }
IfcPropertyEnumeration* IfcPropertyEnumeratedValue::EnumerationReference() const { return (IfcPropertyEnumeration*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPropertyEnumeratedValue::setEnumerationReference(IfcPropertyEnumeration* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPropertyEnumeratedValue::declaration() const { return *IfcPropertyEnumeratedValue_type; }
Type::Enum IfcPropertyEnumeratedValue::Class() { return Type::IfcPropertyEnumeratedValue; }
IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyEnumeratedValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_EnumerationValues, IfcPropertyEnumeration* v4_EnumerationReference) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_EnumerationValues)); e->setArgument(3,(v4_EnumerationReference)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyEnumeration
std::string IfcPropertyEnumeration::Name() const { return *data_->getArgument(0); }
void IfcPropertyEnumeration::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcEntityList::ptr IfcPropertyEnumeration::EnumerationValues() const { return *data_->getArgument(1); }
void IfcPropertyEnumeration::setEnumerationValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcPropertyEnumeration::hasUnit() const { return !data_->getArgument(2)->isNull(); }
IfcUnit* IfcPropertyEnumeration::Unit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPropertyEnumeration::setUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcPropertyEnumeration::declaration() const { return *IfcPropertyEnumeration_type; }
Type::Enum IfcPropertyEnumeration::Class() { return Type::IfcPropertyEnumeration; }
IfcPropertyEnumeration::IfcPropertyEnumeration(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPropertyEnumeration)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, IfcEntityList::ptr v2_EnumerationValues, IfcUnit* v3_Unit) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); e->setArgument(1,(v2_EnumerationValues)); e->setArgument(2,(v3_Unit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyListValue
IfcEntityList::ptr IfcPropertyListValue::ListValues() const { return *data_->getArgument(2); }
void IfcPropertyListValue::setListValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertyListValue::hasUnit() const { return !data_->getArgument(3)->isNull(); }
IfcUnit* IfcPropertyListValue::Unit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPropertyListValue::setUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPropertyListValue::declaration() const { return *IfcPropertyListValue_type; }
Type::Enum IfcPropertyListValue::Class() { return Type::IfcPropertyListValue; }
IfcPropertyListValue::IfcPropertyListValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyListValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_ListValues, IfcUnit* v4_Unit) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_ListValues)); e->setArgument(3,(v4_Unit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyReferenceValue
bool IfcPropertyReferenceValue::hasUsageName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcPropertyReferenceValue::UsageName() const { return *data_->getArgument(2); }
void IfcPropertyReferenceValue::setUsageName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcObjectReferenceSelect* IfcPropertyReferenceValue::PropertyReference() const { return (IfcObjectReferenceSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPropertyReferenceValue::setPropertyReference(IfcObjectReferenceSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPropertyReferenceValue::declaration() const { return *IfcPropertyReferenceValue_type; }
Type::Enum IfcPropertyReferenceValue::Class() { return Type::IfcPropertyReferenceValue; }
IfcPropertyReferenceValue::IfcPropertyReferenceValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyReferenceValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyReferenceValue::IfcPropertyReferenceValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UsageName, IfcObjectReferenceSelect* v4_PropertyReference) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_UsageName) { e->setArgument(2,(*v3_UsageName)); } else { e->setArgument(2); } e->setArgument(3,(v4_PropertyReference)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertySet
IfcTemplatedEntityList< IfcProperty >::ptr IfcPropertySet::HasProperties() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcProperty>(); }
void IfcPropertySet::setHasProperties(IfcTemplatedEntityList< IfcProperty >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }


const IfcParse::entity& IfcPropertySet::declaration() const { return *IfcPropertySet_type; }
Type::Enum IfcPropertySet::Class() { return Type::IfcPropertySet; }
IfcPropertySet::IfcPropertySet(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertySet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertySet::IfcPropertySet(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcProperty >::ptr v5_HasProperties) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_HasProperties)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertySetDefinition

IfcRelDefinesByProperties::list::ptr IfcPropertySetDefinition::PropertyDefinitionOf() const { return data_->getInverse(Type::IfcRelDefinesByProperties, 5)->as<IfcRelDefinesByProperties>(); }
IfcTypeObject::list::ptr IfcPropertySetDefinition::DefinesType() const { return data_->getInverse(Type::IfcTypeObject, 5)->as<IfcTypeObject>(); }

const IfcParse::entity& IfcPropertySetDefinition::declaration() const { return *IfcPropertySetDefinition_type; }
Type::Enum IfcPropertySetDefinition::Class() { return Type::IfcPropertySetDefinition; }
IfcPropertySetDefinition::IfcPropertySetDefinition(IfcAbstractEntity* e) : IfcPropertyDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertySetDefinition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertySingleValue
bool IfcPropertySingleValue::hasNominalValue() const { return !data_->getArgument(2)->isNull(); }
IfcValue* IfcPropertySingleValue::NominalValue() const { return (IfcValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPropertySingleValue::setNominalValue(IfcValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertySingleValue::hasUnit() const { return !data_->getArgument(3)->isNull(); }
IfcUnit* IfcPropertySingleValue::Unit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPropertySingleValue::setUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPropertySingleValue::declaration() const { return *IfcPropertySingleValue_type; }
Type::Enum IfcPropertySingleValue::Class() { return Type::IfcPropertySingleValue; }
IfcPropertySingleValue::IfcPropertySingleValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertySingleValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, boost::optional< std::string > v2_Description, IfcValue* v3_NominalValue, IfcUnit* v4_Unit) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_NominalValue)); e->setArgument(3,(v4_Unit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyTableValue
IfcEntityList::ptr IfcPropertyTableValue::DefiningValues() const { return *data_->getArgument(2); }
void IfcPropertyTableValue::setDefiningValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcEntityList::ptr IfcPropertyTableValue::DefinedValues() const { return *data_->getArgument(3); }
void IfcPropertyTableValue::setDefinedValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPropertyTableValue::hasExpression() const { return !data_->getArgument(4)->isNull(); }
std::string IfcPropertyTableValue::Expression() const { return *data_->getArgument(4); }
void IfcPropertyTableValue::setExpression(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcPropertyTableValue::hasDefiningUnit() const { return !data_->getArgument(5)->isNull(); }
IfcUnit* IfcPropertyTableValue::DefiningUnit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcPropertyTableValue::setDefiningUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcPropertyTableValue::hasDefinedUnit() const { return !data_->getArgument(6)->isNull(); }
IfcUnit* IfcPropertyTableValue::DefinedUnit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcPropertyTableValue::setDefinedUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcPropertyTableValue::declaration() const { return *IfcPropertyTableValue_type; }
Type::Enum IfcPropertyTableValue::Class() { return Type::IfcPropertyTableValue; }
IfcPropertyTableValue::IfcPropertyTableValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyTableValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyTableValue::IfcPropertyTableValue(std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_DefiningValues, IfcEntityList::ptr v4_DefinedValues, boost::optional< std::string > v5_Expression, IfcUnit* v6_DefiningUnit, IfcUnit* v7_DefinedUnit) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_DefiningValues)); e->setArgument(3,(v4_DefinedValues)); if (v5_Expression) { e->setArgument(4,(*v5_Expression)); } else { e->setArgument(4); } e->setArgument(5,(v6_DefiningUnit)); e->setArgument(6,(v7_DefinedUnit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProtectiveDeviceType
IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum IfcProtectiveDeviceType::PredefinedType() const { return IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcProtectiveDeviceType::setPredefinedType(IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcProtectiveDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcProtectiveDeviceType::declaration() const { return *IfcProtectiveDeviceType_type; }
Type::Enum IfcProtectiveDeviceType::Class() { return Type::IfcProtectiveDeviceType; }
IfcProtectiveDeviceType::IfcProtectiveDeviceType(IfcAbstractEntity* e) : IfcFlowControllerType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProtectiveDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum v10_PredefinedType) : IfcFlowControllerType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcProtectiveDeviceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProxy
IfcObjectTypeEnum::IfcObjectTypeEnum IfcProxy::ProxyType() const { return IfcObjectTypeEnum::FromString(*data_->getArgument(7)); }
void IfcProxy::setProxyType(IfcObjectTypeEnum::IfcObjectTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcObjectTypeEnum::ToString(v)); }
bool IfcProxy::hasTag() const { return !data_->getArgument(8)->isNull(); }
std::string IfcProxy::Tag() const { return *data_->getArgument(8); }
void IfcProxy::setTag(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcProxy::declaration() const { return *IfcProxy_type; }
Type::Enum IfcProxy::Class() { return Type::IfcProxy; }
IfcProxy::IfcProxy(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProxy)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProxy::IfcProxy(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcObjectTypeEnum::IfcObjectTypeEnum v8_ProxyType, boost::optional< std::string > v9_Tag) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,v8_ProxyType,IfcObjectTypeEnum::ToString(v8_ProxyType)); if (v9_Tag) { e->setArgument(8,(*v9_Tag)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPumpType
IfcPumpTypeEnum::IfcPumpTypeEnum IfcPumpType::PredefinedType() const { return IfcPumpTypeEnum::FromString(*data_->getArgument(9)); }
void IfcPumpType::setPredefinedType(IfcPumpTypeEnum::IfcPumpTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcPumpTypeEnum::ToString(v)); }


const IfcParse::entity& IfcPumpType::declaration() const { return *IfcPumpType_type; }
Type::Enum IfcPumpType::Class() { return Type::IfcPumpType; }
IfcPumpType::IfcPumpType(IfcAbstractEntity* e) : IfcFlowMovingDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPumpType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPumpType::IfcPumpType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcPumpTypeEnum::IfcPumpTypeEnum v10_PredefinedType) : IfcFlowMovingDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcPumpTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityArea
double IfcQuantityArea::AreaValue() const { return *data_->getArgument(3); }
void IfcQuantityArea::setAreaValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcQuantityArea::declaration() const { return *IfcQuantityArea_type; }
Type::Enum IfcQuantityArea::Class() { return Type::IfcQuantityArea; }
IfcQuantityArea::IfcQuantityArea(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityArea)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_AreaValue) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_AreaValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityCount
double IfcQuantityCount::CountValue() const { return *data_->getArgument(3); }
void IfcQuantityCount::setCountValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcQuantityCount::declaration() const { return *IfcQuantityCount_type; }
Type::Enum IfcQuantityCount::Class() { return Type::IfcQuantityCount; }
IfcQuantityCount::IfcQuantityCount(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityCount)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_CountValue) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_CountValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityLength
double IfcQuantityLength::LengthValue() const { return *data_->getArgument(3); }
void IfcQuantityLength::setLengthValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcQuantityLength::declaration() const { return *IfcQuantityLength_type; }
Type::Enum IfcQuantityLength::Class() { return Type::IfcQuantityLength; }
IfcQuantityLength::IfcQuantityLength(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityLength)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityLength::IfcQuantityLength(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_LengthValue) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_LengthValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityTime
double IfcQuantityTime::TimeValue() const { return *data_->getArgument(3); }
void IfcQuantityTime::setTimeValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcQuantityTime::declaration() const { return *IfcQuantityTime_type; }
Type::Enum IfcQuantityTime::Class() { return Type::IfcQuantityTime; }
IfcQuantityTime::IfcQuantityTime(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityTime)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_TimeValue) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_TimeValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityVolume
double IfcQuantityVolume::VolumeValue() const { return *data_->getArgument(3); }
void IfcQuantityVolume::setVolumeValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcQuantityVolume::declaration() const { return *IfcQuantityVolume_type; }
Type::Enum IfcQuantityVolume::Class() { return Type::IfcQuantityVolume; }
IfcQuantityVolume::IfcQuantityVolume(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityVolume)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_VolumeValue) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_VolumeValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityWeight
double IfcQuantityWeight::WeightValue() const { return *data_->getArgument(3); }
void IfcQuantityWeight::setWeightValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcQuantityWeight::declaration() const { return *IfcQuantityWeight_type; }
Type::Enum IfcQuantityWeight::Class() { return Type::IfcQuantityWeight; }
IfcQuantityWeight::IfcQuantityWeight(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityWeight)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_WeightValue) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_WeightValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRadiusDimension


const IfcParse::entity& IfcRadiusDimension::declaration() const { return *IfcRadiusDimension_type; }
Type::Enum IfcRadiusDimension::Class() { return Type::IfcRadiusDimension; }
IfcRadiusDimension::IfcRadiusDimension(IfcAbstractEntity* e) : IfcDimensionCurveDirectedCallout((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRadiusDimension)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRadiusDimension::IfcRadiusDimension(IfcEntityList::ptr v1_Contents) : IfcDimensionCurveDirectedCallout((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Contents)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRailing
bool IfcRailing::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcRailingTypeEnum::IfcRailingTypeEnum IfcRailing::PredefinedType() const { return IfcRailingTypeEnum::FromString(*data_->getArgument(8)); }
void IfcRailing::setPredefinedType(IfcRailingTypeEnum::IfcRailingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcRailingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRailing::declaration() const { return *IfcRailing_type; }
Type::Enum IfcRailing::Class() { return Type::IfcRailing; }
IfcRailing::IfcRailing(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRailing)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRailing::IfcRailing(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcRailingTypeEnum::IfcRailingTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcRailingTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRailingType
IfcRailingTypeEnum::IfcRailingTypeEnum IfcRailingType::PredefinedType() const { return IfcRailingTypeEnum::FromString(*data_->getArgument(9)); }
void IfcRailingType::setPredefinedType(IfcRailingTypeEnum::IfcRailingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcRailingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRailingType::declaration() const { return *IfcRailingType_type; }
Type::Enum IfcRailingType::Class() { return Type::IfcRailingType; }
IfcRailingType::IfcRailingType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRailingType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRailingType::IfcRailingType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcRailingTypeEnum::IfcRailingTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcRailingTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRamp
IfcRampTypeEnum::IfcRampTypeEnum IfcRamp::ShapeType() const { return IfcRampTypeEnum::FromString(*data_->getArgument(8)); }
void IfcRamp::setShapeType(IfcRampTypeEnum::IfcRampTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcRampTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRamp::declaration() const { return *IfcRamp_type; }
Type::Enum IfcRamp::Class() { return Type::IfcRamp; }
IfcRamp::IfcRamp(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRamp)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRamp::IfcRamp(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, IfcRampTypeEnum::IfcRampTypeEnum v9_ShapeType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } e->setArgument(8,v9_ShapeType,IfcRampTypeEnum::ToString(v9_ShapeType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRampFlight


const IfcParse::entity& IfcRampFlight::declaration() const { return *IfcRampFlight_type; }
Type::Enum IfcRampFlight::Class() { return Type::IfcRampFlight; }
IfcRampFlight::IfcRampFlight(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRampFlight)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRampFlight::IfcRampFlight(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRampFlightType
IfcRampFlightTypeEnum::IfcRampFlightTypeEnum IfcRampFlightType::PredefinedType() const { return IfcRampFlightTypeEnum::FromString(*data_->getArgument(9)); }
void IfcRampFlightType::setPredefinedType(IfcRampFlightTypeEnum::IfcRampFlightTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcRampFlightTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRampFlightType::declaration() const { return *IfcRampFlightType_type; }
Type::Enum IfcRampFlightType::Class() { return Type::IfcRampFlightType; }
IfcRampFlightType::IfcRampFlightType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRampFlightType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRampFlightType::IfcRampFlightType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcRampFlightTypeEnum::IfcRampFlightTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcRampFlightTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRationalBezierCurve
std::vector< double > /*[2:?]*/ IfcRationalBezierCurve::WeightsData() const { return *data_->getArgument(5); }
void IfcRationalBezierCurve::setWeightsData(std::vector< double > /*[2:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRationalBezierCurve::declaration() const { return *IfcRationalBezierCurve_type; }
Type::Enum IfcRationalBezierCurve::Class() { return Type::IfcRationalBezierCurve; }
IfcRationalBezierCurve::IfcRationalBezierCurve(IfcAbstractEntity* e) : IfcBezierCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRationalBezierCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRationalBezierCurve::IfcRationalBezierCurve(int v1_Degree, IfcTemplatedEntityList< IfcCartesianPoint >::ptr v2_ControlPointsList, IfcBSplineCurveForm::IfcBSplineCurveForm v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< double > /*[2:?]*/ v6_WeightsData) : IfcBezierCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Degree)); e->setArgument(1,(v2_ControlPointsList)->generalize()); e->setArgument(2,v3_CurveForm,IfcBSplineCurveForm::ToString(v3_CurveForm)); e->setArgument(3,(v4_ClosedCurve)); e->setArgument(4,(v5_SelfIntersect)); e->setArgument(5,(v6_WeightsData)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRectangleHollowProfileDef
double IfcRectangleHollowProfileDef::WallThickness() const { return *data_->getArgument(5); }
void IfcRectangleHollowProfileDef::setWallThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRectangleHollowProfileDef::hasInnerFilletRadius() const { return !data_->getArgument(6)->isNull(); }
double IfcRectangleHollowProfileDef::InnerFilletRadius() const { return *data_->getArgument(6); }
void IfcRectangleHollowProfileDef::setInnerFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRectangleHollowProfileDef::hasOuterFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcRectangleHollowProfileDef::OuterFilletRadius() const { return *data_->getArgument(7); }
void IfcRectangleHollowProfileDef::setOuterFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcRectangleHollowProfileDef::declaration() const { return *IfcRectangleHollowProfileDef_type; }
Type::Enum IfcRectangleHollowProfileDef::Class() { return Type::IfcRectangleHollowProfileDef; }
IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(IfcAbstractEntity* e) : IfcRectangleProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRectangleHollowProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_WallThickness, boost::optional< double > v7_InnerFilletRadius, boost::optional< double > v8_OuterFilletRadius) : IfcRectangleProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_XDim)); e->setArgument(4,(v5_YDim)); e->setArgument(5,(v6_WallThickness)); if (v7_InnerFilletRadius) { e->setArgument(6,(*v7_InnerFilletRadius)); } else { e->setArgument(6); } if (v8_OuterFilletRadius) { e->setArgument(7,(*v8_OuterFilletRadius)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRectangleProfileDef
double IfcRectangleProfileDef::XDim() const { return *data_->getArgument(3); }
void IfcRectangleProfileDef::setXDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcRectangleProfileDef::YDim() const { return *data_->getArgument(4); }
void IfcRectangleProfileDef::setYDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcRectangleProfileDef::declaration() const { return *IfcRectangleProfileDef_type; }
Type::Enum IfcRectangleProfileDef::Class() { return Type::IfcRectangleProfileDef; }
IfcRectangleProfileDef::IfcRectangleProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRectangleProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRectangleProfileDef::IfcRectangleProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_XDim)); e->setArgument(4,(v5_YDim)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRectangularPyramid
double IfcRectangularPyramid::XLength() const { return *data_->getArgument(1); }
void IfcRectangularPyramid::setXLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcRectangularPyramid::YLength() const { return *data_->getArgument(2); }
void IfcRectangularPyramid::setYLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcRectangularPyramid::Height() const { return *data_->getArgument(3); }
void IfcRectangularPyramid::setHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcRectangularPyramid::declaration() const { return *IfcRectangularPyramid_type; }
Type::Enum IfcRectangularPyramid::Class() { return Type::IfcRectangularPyramid; }
IfcRectangularPyramid::IfcRectangularPyramid(IfcAbstractEntity* e) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRectangularPyramid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRectangularPyramid::IfcRectangularPyramid(IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_Height) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_XLength)); e->setArgument(2,(v3_YLength)); e->setArgument(3,(v4_Height)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRectangularTrimmedSurface
IfcSurface* IfcRectangularTrimmedSurface::BasisSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcRectangularTrimmedSurface::setBasisSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcRectangularTrimmedSurface::U1() const { return *data_->getArgument(1); }
void IfcRectangularTrimmedSurface::setU1(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcRectangularTrimmedSurface::V1() const { return *data_->getArgument(2); }
void IfcRectangularTrimmedSurface::setV1(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcRectangularTrimmedSurface::U2() const { return *data_->getArgument(3); }
void IfcRectangularTrimmedSurface::setU2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcRectangularTrimmedSurface::V2() const { return *data_->getArgument(4); }
void IfcRectangularTrimmedSurface::setV2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcRectangularTrimmedSurface::Usense() const { return *data_->getArgument(5); }
void IfcRectangularTrimmedSurface::setUsense(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRectangularTrimmedSurface::Vsense() const { return *data_->getArgument(6); }
void IfcRectangularTrimmedSurface::setVsense(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRectangularTrimmedSurface::declaration() const { return *IfcRectangularTrimmedSurface_type; }
Type::Enum IfcRectangularTrimmedSurface::Class() { return Type::IfcRectangularTrimmedSurface; }
IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(IfcAbstractEntity* e) : IfcBoundedSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRectangularTrimmedSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(IfcSurface* v1_BasisSurface, double v2_U1, double v3_V1, double v4_U2, double v5_V2, bool v6_Usense, bool v7_Vsense) : IfcBoundedSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisSurface)); e->setArgument(1,(v2_U1)); e->setArgument(2,(v3_V1)); e->setArgument(3,(v4_U2)); e->setArgument(4,(v5_V2)); e->setArgument(5,(v6_Usense)); e->setArgument(6,(v7_Vsense)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReferencesValueDocument
IfcDocumentSelect* IfcReferencesValueDocument::ReferencedDocument() const { return (IfcDocumentSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcReferencesValueDocument::setReferencedDocument(IfcDocumentSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcAppliedValue >::ptr IfcReferencesValueDocument::ReferencingValues() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcAppliedValue>(); }
void IfcReferencesValueDocument::setReferencingValues(IfcTemplatedEntityList< IfcAppliedValue >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
bool IfcReferencesValueDocument::hasName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcReferencesValueDocument::Name() const { return *data_->getArgument(2); }
void IfcReferencesValueDocument::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcReferencesValueDocument::hasDescription() const { return !data_->getArgument(3)->isNull(); }
std::string IfcReferencesValueDocument::Description() const { return *data_->getArgument(3); }
void IfcReferencesValueDocument::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcReferencesValueDocument::declaration() const { return *IfcReferencesValueDocument_type; }
Type::Enum IfcReferencesValueDocument::Class() { return Type::IfcReferencesValueDocument; }
IfcReferencesValueDocument::IfcReferencesValueDocument(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcReferencesValueDocument)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReferencesValueDocument::IfcReferencesValueDocument(IfcDocumentSelect* v1_ReferencedDocument, IfcTemplatedEntityList< IfcAppliedValue >::ptr v2_ReferencingValues, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ReferencedDocument)); e->setArgument(1,(v2_ReferencingValues)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRegularTimeSeries
double IfcRegularTimeSeries::TimeStep() const { return *data_->getArgument(8); }
void IfcRegularTimeSeries::setTimeStep(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
IfcTemplatedEntityList< IfcTimeSeriesValue >::ptr IfcRegularTimeSeries::Values() const { IfcEntityList::ptr es = *data_->getArgument(9); return es->as<IfcTimeSeriesValue>(); }
void IfcRegularTimeSeries::setValues(IfcTemplatedEntityList< IfcTimeSeriesValue >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v->generalize()); }


const IfcParse::entity& IfcRegularTimeSeries::declaration() const { return *IfcRegularTimeSeries_type; }
Type::Enum IfcRegularTimeSeries::Class() { return Type::IfcRegularTimeSeries; }
IfcRegularTimeSeries::IfcRegularTimeSeries(IfcAbstractEntity* e) : IfcTimeSeries((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRegularTimeSeries)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRegularTimeSeries::IfcRegularTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, IfcDateTimeSelect* v3_StartTime, IfcDateTimeSelect* v4_EndTime, IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum v5_TimeSeriesDataType, IfcDataOriginEnum::IfcDataOriginEnum v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, IfcUnit* v8_Unit, double v9_TimeStep, IfcTemplatedEntityList< IfcTimeSeriesValue >::ptr v10_Values) : IfcTimeSeries((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_StartTime)); e->setArgument(3,(v4_EndTime)); e->setArgument(4,v5_TimeSeriesDataType,IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType)); e->setArgument(5,v6_DataOrigin,IfcDataOriginEnum::ToString(v6_DataOrigin)); if (v7_UserDefinedDataOrigin) { e->setArgument(6,(*v7_UserDefinedDataOrigin)); } else { e->setArgument(6); } e->setArgument(7,(v8_Unit)); e->setArgument(8,(v9_TimeStep)); e->setArgument(9,(v10_Values)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcementBarProperties
double IfcReinforcementBarProperties::TotalCrossSectionArea() const { return *data_->getArgument(0); }
void IfcReinforcementBarProperties::setTotalCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
std::string IfcReinforcementBarProperties::SteelGrade() const { return *data_->getArgument(1); }
void IfcReinforcementBarProperties::setSteelGrade(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcReinforcementBarProperties::hasBarSurface() const { return !data_->getArgument(2)->isNull(); }
IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum IfcReinforcementBarProperties::BarSurface() const { return IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); }
void IfcReinforcementBarProperties::setBarSurface(IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcReinforcingBarSurfaceEnum::ToString(v)); }
bool IfcReinforcementBarProperties::hasEffectiveDepth() const { return !data_->getArgument(3)->isNull(); }
double IfcReinforcementBarProperties::EffectiveDepth() const { return *data_->getArgument(3); }
void IfcReinforcementBarProperties::setEffectiveDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcReinforcementBarProperties::hasNominalBarDiameter() const { return !data_->getArgument(4)->isNull(); }
double IfcReinforcementBarProperties::NominalBarDiameter() const { return *data_->getArgument(4); }
void IfcReinforcementBarProperties::setNominalBarDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcReinforcementBarProperties::hasBarCount() const { return !data_->getArgument(5)->isNull(); }
double IfcReinforcementBarProperties::BarCount() const { return *data_->getArgument(5); }
void IfcReinforcementBarProperties::setBarCount(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcReinforcementBarProperties::declaration() const { return *IfcReinforcementBarProperties_type; }
Type::Enum IfcReinforcementBarProperties::Class() { return Type::IfcReinforcementBarProperties; }
IfcReinforcementBarProperties::IfcReinforcementBarProperties(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcReinforcementBarProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcementBarProperties::IfcReinforcementBarProperties(double v1_TotalCrossSectionArea, std::string v2_SteelGrade, boost::optional< IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum > v3_BarSurface, boost::optional< double > v4_EffectiveDepth, boost::optional< double > v5_NominalBarDiameter, boost::optional< double > v6_BarCount) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TotalCrossSectionArea)); e->setArgument(1,(v2_SteelGrade)); if (v3_BarSurface) { e->setArgument(2,*v3_BarSurface,IfcReinforcingBarSurfaceEnum::ToString(*v3_BarSurface)); } else { e->setArgument(2); } if (v4_EffectiveDepth) { e->setArgument(3,(*v4_EffectiveDepth)); } else { e->setArgument(3); } if (v5_NominalBarDiameter) { e->setArgument(4,(*v5_NominalBarDiameter)); } else { e->setArgument(4); } if (v6_BarCount) { e->setArgument(5,(*v6_BarCount)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcementDefinitionProperties
bool IfcReinforcementDefinitionProperties::hasDefinitionType() const { return !data_->getArgument(4)->isNull(); }
std::string IfcReinforcementDefinitionProperties::DefinitionType() const { return *data_->getArgument(4); }
void IfcReinforcementDefinitionProperties::setDefinitionType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcSectionReinforcementProperties >::ptr IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcSectionReinforcementProperties>(); }
void IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(IfcTemplatedEntityList< IfcSectionReinforcementProperties >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcReinforcementDefinitionProperties::declaration() const { return *IfcReinforcementDefinitionProperties_type; }
Type::Enum IfcReinforcementDefinitionProperties::Class() { return Type::IfcReinforcementDefinitionProperties; }
IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcementDefinitionProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_DefinitionType, IfcTemplatedEntityList< IfcSectionReinforcementProperties >::ptr v6_ReinforcementSectionDefinitions) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_DefinitionType) { e->setArgument(4,(*v5_DefinitionType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ReinforcementSectionDefinitions)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcingBar
double IfcReinforcingBar::NominalDiameter() const { return *data_->getArgument(9); }
void IfcReinforcingBar::setNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
double IfcReinforcingBar::CrossSectionArea() const { return *data_->getArgument(10); }
void IfcReinforcingBar::setCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcReinforcingBar::hasBarLength() const { return !data_->getArgument(11)->isNull(); }
double IfcReinforcingBar::BarLength() const { return *data_->getArgument(11); }
void IfcReinforcingBar::setBarLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum IfcReinforcingBar::BarRole() const { return IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(12)); }
void IfcReinforcingBar::setBarRole(IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v,IfcReinforcingBarRoleEnum::ToString(v)); }
bool IfcReinforcingBar::hasBarSurface() const { return !data_->getArgument(13)->isNull(); }
IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum IfcReinforcingBar::BarSurface() const { return IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); }
void IfcReinforcingBar::setBarSurface(IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v,IfcReinforcingBarSurfaceEnum::ToString(v)); }


const IfcParse::entity& IfcReinforcingBar::declaration() const { return *IfcReinforcingBar_type; }
Type::Enum IfcReinforcingBar::Class() { return Type::IfcReinforcingBar; }
IfcReinforcingBar::IfcReinforcingBar(IfcAbstractEntity* e) : IfcReinforcingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcingBar)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, double v10_NominalDiameter, double v11_CrossSectionArea, boost::optional< double > v12_BarLength, IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum v13_BarRole, boost::optional< IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum > v14_BarSurface) : IfcReinforcingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_SteelGrade) { e->setArgument(8,(*v9_SteelGrade)); } else { e->setArgument(8); } e->setArgument(9,(v10_NominalDiameter)); e->setArgument(10,(v11_CrossSectionArea)); if (v12_BarLength) { e->setArgument(11,(*v12_BarLength)); } else { e->setArgument(11); } e->setArgument(12,v13_BarRole,IfcReinforcingBarRoleEnum::ToString(v13_BarRole)); if (v14_BarSurface) { e->setArgument(13,*v14_BarSurface,IfcReinforcingBarSurfaceEnum::ToString(*v14_BarSurface)); } else { e->setArgument(13); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcingElement
bool IfcReinforcingElement::hasSteelGrade() const { return !data_->getArgument(8)->isNull(); }
std::string IfcReinforcingElement::SteelGrade() const { return *data_->getArgument(8); }
void IfcReinforcingElement::setSteelGrade(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcReinforcingElement::declaration() const { return *IfcReinforcingElement_type; }
Type::Enum IfcReinforcingElement::Class() { return Type::IfcReinforcingElement; }
IfcReinforcingElement::IfcReinforcingElement(IfcAbstractEntity* e) : IfcBuildingElementComponent((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcingElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcingElement::IfcReinforcingElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade) : IfcBuildingElementComponent((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_SteelGrade) { e->setArgument(8,(*v9_SteelGrade)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcingMesh
bool IfcReinforcingMesh::hasMeshLength() const { return !data_->getArgument(9)->isNull(); }
double IfcReinforcingMesh::MeshLength() const { return *data_->getArgument(9); }
void IfcReinforcingMesh::setMeshLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcReinforcingMesh::hasMeshWidth() const { return !data_->getArgument(10)->isNull(); }
double IfcReinforcingMesh::MeshWidth() const { return *data_->getArgument(10); }
void IfcReinforcingMesh::setMeshWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
double IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { return *data_->getArgument(11); }
void IfcReinforcingMesh::setLongitudinalBarNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
double IfcReinforcingMesh::TransverseBarNominalDiameter() const { return *data_->getArgument(12); }
void IfcReinforcingMesh::setTransverseBarNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
double IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { return *data_->getArgument(13); }
void IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
double IfcReinforcingMesh::TransverseBarCrossSectionArea() const { return *data_->getArgument(14); }
void IfcReinforcingMesh::setTransverseBarCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
double IfcReinforcingMesh::LongitudinalBarSpacing() const { return *data_->getArgument(15); }
void IfcReinforcingMesh::setLongitudinalBarSpacing(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }
double IfcReinforcingMesh::TransverseBarSpacing() const { return *data_->getArgument(16); }
void IfcReinforcingMesh::setTransverseBarSpacing(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v); }


const IfcParse::entity& IfcReinforcingMesh::declaration() const { return *IfcReinforcingMesh_type; }
Type::Enum IfcReinforcingMesh::Class() { return Type::IfcReinforcingMesh; }
IfcReinforcingMesh::IfcReinforcingMesh(IfcAbstractEntity* e) : IfcReinforcingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcingMesh)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< double > v10_MeshLength, boost::optional< double > v11_MeshWidth, double v12_LongitudinalBarNominalDiameter, double v13_TransverseBarNominalDiameter, double v14_LongitudinalBarCrossSectionArea, double v15_TransverseBarCrossSectionArea, double v16_LongitudinalBarSpacing, double v17_TransverseBarSpacing) : IfcReinforcingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_SteelGrade) { e->setArgument(8,(*v9_SteelGrade)); } else { e->setArgument(8); } if (v10_MeshLength) { e->setArgument(9,(*v10_MeshLength)); } else { e->setArgument(9); } if (v11_MeshWidth) { e->setArgument(10,(*v11_MeshWidth)); } else { e->setArgument(10); } e->setArgument(11,(v12_LongitudinalBarNominalDiameter)); e->setArgument(12,(v13_TransverseBarNominalDiameter)); e->setArgument(13,(v14_LongitudinalBarCrossSectionArea)); e->setArgument(14,(v15_TransverseBarCrossSectionArea)); e->setArgument(15,(v16_LongitudinalBarSpacing)); e->setArgument(16,(v17_TransverseBarSpacing)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAggregates


const IfcParse::entity& IfcRelAggregates::declaration() const { return *IfcRelAggregates_type; }
Type::Enum IfcRelAggregates::Class() { return Type::IfcRelAggregates; }
IfcRelAggregates::IfcRelAggregates(IfcAbstractEntity* e) : IfcRelDecomposes((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAggregates)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcObjectDefinition* v5_RelatingObject, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v6_RelatedObjects) : IfcRelDecomposes((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingObject)); e->setArgument(5,(v6_RelatedObjects)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssigns
IfcTemplatedEntityList< IfcObjectDefinition >::ptr IfcRelAssigns::RelatedObjects() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcObjectDefinition>(); }
void IfcRelAssigns::setRelatedObjects(IfcTemplatedEntityList< IfcObjectDefinition >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
bool IfcRelAssigns::hasRelatedObjectsType() const { return !data_->getArgument(5)->isNull(); }
IfcObjectTypeEnum::IfcObjectTypeEnum IfcRelAssigns::RelatedObjectsType() const { return IfcObjectTypeEnum::FromString(*data_->getArgument(5)); }
void IfcRelAssigns::setRelatedObjectsType(IfcObjectTypeEnum::IfcObjectTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcObjectTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRelAssigns::declaration() const { return *IfcRelAssigns_type; }
Type::Enum IfcRelAssigns::Class() { return Type::IfcRelAssigns; }
IfcRelAssigns::IfcRelAssigns(IfcAbstractEntity* e) : IfcRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssigns)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssigns::IfcRelAssigns(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType) : IfcRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsTasks
bool IfcRelAssignsTasks::hasTimeForTask() const { return !data_->getArgument(7)->isNull(); }
IfcScheduleTimeControl* IfcRelAssignsTasks::TimeForTask() const { return (IfcScheduleTimeControl*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcRelAssignsTasks::setTimeForTask(IfcScheduleTimeControl* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcRelAssignsTasks::declaration() const { return *IfcRelAssignsTasks_type; }
Type::Enum IfcRelAssignsTasks::Class() { return Type::IfcRelAssignsTasks; }
IfcRelAssignsTasks::IfcRelAssignsTasks(IfcAbstractEntity* e) : IfcRelAssignsToControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsTasks)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsTasks::IfcRelAssignsTasks(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcControl* v7_RelatingControl, IfcScheduleTimeControl* v8_TimeForTask) : IfcRelAssignsToControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingControl)); e->setArgument(7,(v8_TimeForTask)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToActor
IfcActor* IfcRelAssignsToActor::RelatingActor() const { return (IfcActor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToActor::setRelatingActor(IfcActor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRelAssignsToActor::hasActingRole() const { return !data_->getArgument(7)->isNull(); }
IfcActorRole* IfcRelAssignsToActor::ActingRole() const { return (IfcActorRole*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcRelAssignsToActor::setActingRole(IfcActorRole* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcRelAssignsToActor::declaration() const { return *IfcRelAssignsToActor_type; }
Type::Enum IfcRelAssignsToActor::Class() { return Type::IfcRelAssignsToActor; }
IfcRelAssignsToActor::IfcRelAssignsToActor(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToActor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToActor::IfcRelAssignsToActor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcActor* v7_RelatingActor, IfcActorRole* v8_ActingRole) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingActor)); e->setArgument(7,(v8_ActingRole)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToControl
IfcControl* IfcRelAssignsToControl::RelatingControl() const { return (IfcControl*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToControl::setRelatingControl(IfcControl* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelAssignsToControl::declaration() const { return *IfcRelAssignsToControl_type; }
Type::Enum IfcRelAssignsToControl::Class() { return Type::IfcRelAssignsToControl; }
IfcRelAssignsToControl::IfcRelAssignsToControl(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToControl)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToControl::IfcRelAssignsToControl(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcControl* v7_RelatingControl) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingControl)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToGroup
IfcGroup* IfcRelAssignsToGroup::RelatingGroup() const { return (IfcGroup*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToGroup::setRelatingGroup(IfcGroup* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelAssignsToGroup::declaration() const { return *IfcRelAssignsToGroup_type; }
Type::Enum IfcRelAssignsToGroup::Class() { return Type::IfcRelAssignsToGroup; }
IfcRelAssignsToGroup::IfcRelAssignsToGroup(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToGroup)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToGroup::IfcRelAssignsToGroup(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcGroup* v7_RelatingGroup) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingGroup)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToProcess
IfcProcess* IfcRelAssignsToProcess::RelatingProcess() const { return (IfcProcess*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToProcess::setRelatingProcess(IfcProcess* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRelAssignsToProcess::hasQuantityInProcess() const { return !data_->getArgument(7)->isNull(); }
IfcMeasureWithUnit* IfcRelAssignsToProcess::QuantityInProcess() const { return (IfcMeasureWithUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcRelAssignsToProcess::setQuantityInProcess(IfcMeasureWithUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcRelAssignsToProcess::declaration() const { return *IfcRelAssignsToProcess_type; }
Type::Enum IfcRelAssignsToProcess::Class() { return Type::IfcRelAssignsToProcess; }
IfcRelAssignsToProcess::IfcRelAssignsToProcess(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToProcess)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToProcess::IfcRelAssignsToProcess(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcProcess* v7_RelatingProcess, IfcMeasureWithUnit* v8_QuantityInProcess) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingProcess)); e->setArgument(7,(v8_QuantityInProcess)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToProduct
IfcProduct* IfcRelAssignsToProduct::RelatingProduct() const { return (IfcProduct*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToProduct::setRelatingProduct(IfcProduct* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelAssignsToProduct::declaration() const { return *IfcRelAssignsToProduct_type; }
Type::Enum IfcRelAssignsToProduct::Class() { return Type::IfcRelAssignsToProduct; }
IfcRelAssignsToProduct::IfcRelAssignsToProduct(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToProduct)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToProduct::IfcRelAssignsToProduct(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcProduct* v7_RelatingProduct) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingProduct)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToProjectOrder


const IfcParse::entity& IfcRelAssignsToProjectOrder::declaration() const { return *IfcRelAssignsToProjectOrder_type; }
Type::Enum IfcRelAssignsToProjectOrder::Class() { return Type::IfcRelAssignsToProjectOrder; }
IfcRelAssignsToProjectOrder::IfcRelAssignsToProjectOrder(IfcAbstractEntity* e) : IfcRelAssignsToControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToProjectOrder)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToProjectOrder::IfcRelAssignsToProjectOrder(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcControl* v7_RelatingControl) : IfcRelAssignsToControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingControl)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToResource
IfcResource* IfcRelAssignsToResource::RelatingResource() const { return (IfcResource*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToResource::setRelatingResource(IfcResource* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelAssignsToResource::declaration() const { return *IfcRelAssignsToResource_type; }
Type::Enum IfcRelAssignsToResource::Class() { return Type::IfcRelAssignsToResource; }
IfcRelAssignsToResource::IfcRelAssignsToResource(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToResource::IfcRelAssignsToResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcResource* v7_RelatingResource) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingResource)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociates
IfcTemplatedEntityList< IfcRoot >::ptr IfcRelAssociates::RelatedObjects() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcRoot>(); }
void IfcRelAssociates::setRelatedObjects(IfcTemplatedEntityList< IfcRoot >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }


const IfcParse::entity& IfcRelAssociates::declaration() const { return *IfcRelAssociates_type; }
Type::Enum IfcRelAssociates::Class() { return Type::IfcRelAssociates; }
IfcRelAssociates::IfcRelAssociates(IfcAbstractEntity* e) : IfcRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociates)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociates::IfcRelAssociates(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcRoot >::ptr v5_RelatedObjects) : IfcRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesAppliedValue
IfcAppliedValue* IfcRelAssociatesAppliedValue::RelatingAppliedValue() const { return (IfcAppliedValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesAppliedValue::setRelatingAppliedValue(IfcAppliedValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelAssociatesAppliedValue::declaration() const { return *IfcRelAssociatesAppliedValue_type; }
Type::Enum IfcRelAssociatesAppliedValue::Class() { return Type::IfcRelAssociatesAppliedValue; }
IfcRelAssociatesAppliedValue::IfcRelAssociatesAppliedValue(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesAppliedValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesAppliedValue::IfcRelAssociatesAppliedValue(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcRoot >::ptr v5_RelatedObjects, IfcAppliedValue* v6_RelatingAppliedValue) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingAppliedValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesApproval
IfcApproval* IfcRelAssociatesApproval::RelatingApproval() const { return (IfcApproval*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesApproval::setRelatingApproval(IfcApproval* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelAssociatesApproval::declaration() const { return *IfcRelAssociatesApproval_type; }
Type::Enum IfcRelAssociatesApproval::Class() { return Type::IfcRelAssociatesApproval; }
IfcRelAssociatesApproval::IfcRelAssociatesApproval(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesApproval)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesApproval::IfcRelAssociatesApproval(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcRoot >::ptr v5_RelatedObjects, IfcApproval* v6_RelatingApproval) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingApproval)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesClassification
IfcClassificationNotationSelect* IfcRelAssociatesClassification::RelatingClassification() const { return (IfcClassificationNotationSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesClassification::setRelatingClassification(IfcClassificationNotationSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelAssociatesClassification::declaration() const { return *IfcRelAssociatesClassification_type; }
Type::Enum IfcRelAssociatesClassification::Class() { return Type::IfcRelAssociatesClassification; }
IfcRelAssociatesClassification::IfcRelAssociatesClassification(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesClassification)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesClassification::IfcRelAssociatesClassification(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcRoot >::ptr v5_RelatedObjects, IfcClassificationNotationSelect* v6_RelatingClassification) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingClassification)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesConstraint
std::string IfcRelAssociatesConstraint::Intent() const { return *data_->getArgument(5); }
void IfcRelAssociatesConstraint::setIntent(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcConstraint* IfcRelAssociatesConstraint::RelatingConstraint() const { return (IfcConstraint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssociatesConstraint::setRelatingConstraint(IfcConstraint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelAssociatesConstraint::declaration() const { return *IfcRelAssociatesConstraint_type; }
Type::Enum IfcRelAssociatesConstraint::Class() { return Type::IfcRelAssociatesConstraint; }
IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesConstraint)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcRoot >::ptr v5_RelatedObjects, std::string v6_Intent, IfcConstraint* v7_RelatingConstraint) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_Intent)); e->setArgument(6,(v7_RelatingConstraint)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesDocument
IfcDocumentSelect* IfcRelAssociatesDocument::RelatingDocument() const { return (IfcDocumentSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesDocument::setRelatingDocument(IfcDocumentSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelAssociatesDocument::declaration() const { return *IfcRelAssociatesDocument_type; }
Type::Enum IfcRelAssociatesDocument::Class() { return Type::IfcRelAssociatesDocument; }
IfcRelAssociatesDocument::IfcRelAssociatesDocument(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesDocument)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesDocument::IfcRelAssociatesDocument(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcRoot >::ptr v5_RelatedObjects, IfcDocumentSelect* v6_RelatingDocument) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingDocument)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesLibrary
IfcLibrarySelect* IfcRelAssociatesLibrary::RelatingLibrary() const { return (IfcLibrarySelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesLibrary::setRelatingLibrary(IfcLibrarySelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelAssociatesLibrary::declaration() const { return *IfcRelAssociatesLibrary_type; }
Type::Enum IfcRelAssociatesLibrary::Class() { return Type::IfcRelAssociatesLibrary; }
IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesLibrary)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcRoot >::ptr v5_RelatedObjects, IfcLibrarySelect* v6_RelatingLibrary) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingLibrary)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesMaterial
IfcMaterialSelect* IfcRelAssociatesMaterial::RelatingMaterial() const { return (IfcMaterialSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesMaterial::setRelatingMaterial(IfcMaterialSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelAssociatesMaterial::declaration() const { return *IfcRelAssociatesMaterial_type; }
Type::Enum IfcRelAssociatesMaterial::Class() { return Type::IfcRelAssociatesMaterial; }
IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesMaterial)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcRoot >::ptr v5_RelatedObjects, IfcMaterialSelect* v6_RelatingMaterial) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingMaterial)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesProfileProperties
IfcProfileProperties* IfcRelAssociatesProfileProperties::RelatingProfileProperties() const { return (IfcProfileProperties*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesProfileProperties::setRelatingProfileProperties(IfcProfileProperties* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRelAssociatesProfileProperties::hasProfileSectionLocation() const { return !data_->getArgument(6)->isNull(); }
IfcShapeAspect* IfcRelAssociatesProfileProperties::ProfileSectionLocation() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssociatesProfileProperties::setProfileSectionLocation(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRelAssociatesProfileProperties::hasProfileOrientation() const { return !data_->getArgument(7)->isNull(); }
IfcOrientationSelect* IfcRelAssociatesProfileProperties::ProfileOrientation() const { return (IfcOrientationSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcRelAssociatesProfileProperties::setProfileOrientation(IfcOrientationSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcRelAssociatesProfileProperties::declaration() const { return *IfcRelAssociatesProfileProperties_type; }
Type::Enum IfcRelAssociatesProfileProperties::Class() { return Type::IfcRelAssociatesProfileProperties; }
IfcRelAssociatesProfileProperties::IfcRelAssociatesProfileProperties(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesProfileProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesProfileProperties::IfcRelAssociatesProfileProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcRoot >::ptr v5_RelatedObjects, IfcProfileProperties* v6_RelatingProfileProperties, IfcShapeAspect* v7_ProfileSectionLocation, IfcOrientationSelect* v8_ProfileOrientation) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingProfileProperties)); e->setArgument(6,(v7_ProfileSectionLocation)); e->setArgument(7,(v8_ProfileOrientation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnects


const IfcParse::entity& IfcRelConnects::declaration() const { return *IfcRelConnects_type; }
Type::Enum IfcRelConnects::Class() { return Type::IfcRelConnects; }
IfcRelConnects::IfcRelConnects(IfcAbstractEntity* e) : IfcRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnects)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnects::IfcRelConnects(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsElements
bool IfcRelConnectsElements::hasConnectionGeometry() const { return !data_->getArgument(4)->isNull(); }
IfcConnectionGeometry* IfcRelConnectsElements::ConnectionGeometry() const { return (IfcConnectionGeometry*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelConnectsElements::setConnectionGeometry(IfcConnectionGeometry* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcElement* IfcRelConnectsElements::RelatingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelConnectsElements::setRelatingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcElement* IfcRelConnectsElements::RelatedElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelConnectsElements::setRelatedElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelConnectsElements::declaration() const { return *IfcRelConnectsElements_type; }
Type::Enum IfcRelConnectsElements::Class() { return Type::IfcRelConnectsElements; }
IfcRelConnectsElements::IfcRelConnectsElements(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsElements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsElements::IfcRelConnectsElements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcConnectionGeometry* v5_ConnectionGeometry, IfcElement* v6_RelatingElement, IfcElement* v7_RelatedElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_ConnectionGeometry)); e->setArgument(5,(v6_RelatingElement)); e->setArgument(6,(v7_RelatedElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsPathElements
std::vector< int > /*[0:?]*/ IfcRelConnectsPathElements::RelatingPriorities() const { return *data_->getArgument(7); }
void IfcRelConnectsPathElements::setRelatingPriorities(std::vector< int > /*[0:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
std::vector< int > /*[0:?]*/ IfcRelConnectsPathElements::RelatedPriorities() const { return *data_->getArgument(8); }
void IfcRelConnectsPathElements::setRelatedPriorities(std::vector< int > /*[0:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
IfcConnectionTypeEnum::IfcConnectionTypeEnum IfcRelConnectsPathElements::RelatedConnectionType() const { return IfcConnectionTypeEnum::FromString(*data_->getArgument(9)); }
void IfcRelConnectsPathElements::setRelatedConnectionType(IfcConnectionTypeEnum::IfcConnectionTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcConnectionTypeEnum::ToString(v)); }
IfcConnectionTypeEnum::IfcConnectionTypeEnum IfcRelConnectsPathElements::RelatingConnectionType() const { return IfcConnectionTypeEnum::FromString(*data_->getArgument(10)); }
void IfcRelConnectsPathElements::setRelatingConnectionType(IfcConnectionTypeEnum::IfcConnectionTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcConnectionTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRelConnectsPathElements::declaration() const { return *IfcRelConnectsPathElements_type; }
Type::Enum IfcRelConnectsPathElements::Class() { return Type::IfcRelConnectsPathElements; }
IfcRelConnectsPathElements::IfcRelConnectsPathElements(IfcAbstractEntity* e) : IfcRelConnectsElements((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsPathElements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsPathElements::IfcRelConnectsPathElements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcConnectionGeometry* v5_ConnectionGeometry, IfcElement* v6_RelatingElement, IfcElement* v7_RelatedElement, std::vector< int > /*[0:?]*/ v8_RelatingPriorities, std::vector< int > /*[0:?]*/ v9_RelatedPriorities, IfcConnectionTypeEnum::IfcConnectionTypeEnum v10_RelatedConnectionType, IfcConnectionTypeEnum::IfcConnectionTypeEnum v11_RelatingConnectionType) : IfcRelConnectsElements((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_ConnectionGeometry)); e->setArgument(5,(v6_RelatingElement)); e->setArgument(6,(v7_RelatedElement)); e->setArgument(7,(v8_RelatingPriorities)); e->setArgument(8,(v9_RelatedPriorities)); e->setArgument(9,v10_RelatedConnectionType,IfcConnectionTypeEnum::ToString(v10_RelatedConnectionType)); e->setArgument(10,v11_RelatingConnectionType,IfcConnectionTypeEnum::ToString(v11_RelatingConnectionType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsPortToElement
IfcPort* IfcRelConnectsPortToElement::RelatingPort() const { return (IfcPort*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelConnectsPortToElement::setRelatingPort(IfcPort* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcElement* IfcRelConnectsPortToElement::RelatedElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelConnectsPortToElement::setRelatedElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelConnectsPortToElement::declaration() const { return *IfcRelConnectsPortToElement_type; }
Type::Enum IfcRelConnectsPortToElement::Class() { return Type::IfcRelConnectsPortToElement; }
IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsPortToElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcPort* v5_RelatingPort, IfcElement* v6_RelatedElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingPort)); e->setArgument(5,(v6_RelatedElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsPorts
IfcPort* IfcRelConnectsPorts::RelatingPort() const { return (IfcPort*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelConnectsPorts::setRelatingPort(IfcPort* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcPort* IfcRelConnectsPorts::RelatedPort() const { return (IfcPort*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelConnectsPorts::setRelatedPort(IfcPort* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRelConnectsPorts::hasRealizingElement() const { return !data_->getArgument(6)->isNull(); }
IfcElement* IfcRelConnectsPorts::RealizingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelConnectsPorts::setRealizingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelConnectsPorts::declaration() const { return *IfcRelConnectsPorts_type; }
Type::Enum IfcRelConnectsPorts::Class() { return Type::IfcRelConnectsPorts; }
IfcRelConnectsPorts::IfcRelConnectsPorts(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsPorts)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsPorts::IfcRelConnectsPorts(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcPort* v5_RelatingPort, IfcPort* v6_RelatedPort, IfcElement* v7_RealizingElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingPort)); e->setArgument(5,(v6_RelatedPort)); e->setArgument(6,(v7_RealizingElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsStructuralActivity
IfcStructuralActivityAssignmentSelect* IfcRelConnectsStructuralActivity::RelatingElement() const { return (IfcStructuralActivityAssignmentSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelConnectsStructuralActivity::setRelatingElement(IfcStructuralActivityAssignmentSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcStructuralActivity* IfcRelConnectsStructuralActivity::RelatedStructuralActivity() const { return (IfcStructuralActivity*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelConnectsStructuralActivity::setRelatedStructuralActivity(IfcStructuralActivity* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelConnectsStructuralActivity::declaration() const { return *IfcRelConnectsStructuralActivity_type; }
Type::Enum IfcRelConnectsStructuralActivity::Class() { return Type::IfcRelConnectsStructuralActivity; }
IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsStructuralActivity)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcStructuralActivityAssignmentSelect* v5_RelatingElement, IfcStructuralActivity* v6_RelatedStructuralActivity) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingElement)); e->setArgument(5,(v6_RelatedStructuralActivity)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsStructuralElement
IfcElement* IfcRelConnectsStructuralElement::RelatingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelConnectsStructuralElement::setRelatingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcStructuralMember* IfcRelConnectsStructuralElement::RelatedStructuralMember() const { return (IfcStructuralMember*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelConnectsStructuralElement::setRelatedStructuralMember(IfcStructuralMember* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelConnectsStructuralElement::declaration() const { return *IfcRelConnectsStructuralElement_type; }
Type::Enum IfcRelConnectsStructuralElement::Class() { return Type::IfcRelConnectsStructuralElement; }
IfcRelConnectsStructuralElement::IfcRelConnectsStructuralElement(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsStructuralElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsStructuralElement::IfcRelConnectsStructuralElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcElement* v5_RelatingElement, IfcStructuralMember* v6_RelatedStructuralMember) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingElement)); e->setArgument(5,(v6_RelatedStructuralMember)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsStructuralMember
IfcStructuralMember* IfcRelConnectsStructuralMember::RelatingStructuralMember() const { return (IfcStructuralMember*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelConnectsStructuralMember::setRelatingStructuralMember(IfcStructuralMember* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcStructuralConnection* IfcRelConnectsStructuralMember::RelatedStructuralConnection() const { return (IfcStructuralConnection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelConnectsStructuralMember::setRelatedStructuralConnection(IfcStructuralConnection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRelConnectsStructuralMember::hasAppliedCondition() const { return !data_->getArgument(6)->isNull(); }
IfcBoundaryCondition* IfcRelConnectsStructuralMember::AppliedCondition() const { return (IfcBoundaryCondition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelConnectsStructuralMember::setAppliedCondition(IfcBoundaryCondition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRelConnectsStructuralMember::hasAdditionalConditions() const { return !data_->getArgument(7)->isNull(); }
IfcStructuralConnectionCondition* IfcRelConnectsStructuralMember::AdditionalConditions() const { return (IfcStructuralConnectionCondition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcRelConnectsStructuralMember::setAdditionalConditions(IfcStructuralConnectionCondition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcRelConnectsStructuralMember::hasSupportedLength() const { return !data_->getArgument(8)->isNull(); }
double IfcRelConnectsStructuralMember::SupportedLength() const { return *data_->getArgument(8); }
void IfcRelConnectsStructuralMember::setSupportedLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcRelConnectsStructuralMember::hasConditionCoordinateSystem() const { return !data_->getArgument(9)->isNull(); }
IfcAxis2Placement3D* IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcRelConnectsStructuralMember::setConditionCoordinateSystem(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcRelConnectsStructuralMember::declaration() const { return *IfcRelConnectsStructuralMember_type; }
Type::Enum IfcRelConnectsStructuralMember::Class() { return Type::IfcRelConnectsStructuralMember; }
IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsStructuralMember)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcStructuralMember* v5_RelatingStructuralMember, IfcStructuralConnection* v6_RelatedStructuralConnection, IfcBoundaryCondition* v7_AppliedCondition, IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, IfcAxis2Placement3D* v10_ConditionCoordinateSystem) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingStructuralMember)); e->setArgument(5,(v6_RelatedStructuralConnection)); e->setArgument(6,(v7_AppliedCondition)); e->setArgument(7,(v8_AdditionalConditions)); if (v9_SupportedLength) { e->setArgument(8,(*v9_SupportedLength)); } else { e->setArgument(8); } e->setArgument(9,(v10_ConditionCoordinateSystem)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsWithEccentricity
IfcConnectionGeometry* IfcRelConnectsWithEccentricity::ConnectionConstraint() const { return (IfcConnectionGeometry*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcRelConnectsWithEccentricity::setConnectionConstraint(IfcConnectionGeometry* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcRelConnectsWithEccentricity::declaration() const { return *IfcRelConnectsWithEccentricity_type; }
Type::Enum IfcRelConnectsWithEccentricity::Class() { return Type::IfcRelConnectsWithEccentricity; }
IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(IfcAbstractEntity* e) : IfcRelConnectsStructuralMember((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsWithEccentricity)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcStructuralMember* v5_RelatingStructuralMember, IfcStructuralConnection* v6_RelatedStructuralConnection, IfcBoundaryCondition* v7_AppliedCondition, IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, IfcAxis2Placement3D* v10_ConditionCoordinateSystem, IfcConnectionGeometry* v11_ConnectionConstraint) : IfcRelConnectsStructuralMember((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingStructuralMember)); e->setArgument(5,(v6_RelatedStructuralConnection)); e->setArgument(6,(v7_AppliedCondition)); e->setArgument(7,(v8_AdditionalConditions)); if (v9_SupportedLength) { e->setArgument(8,(*v9_SupportedLength)); } else { e->setArgument(8); } e->setArgument(9,(v10_ConditionCoordinateSystem)); e->setArgument(10,(v11_ConnectionConstraint)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsWithRealizingElements
IfcTemplatedEntityList< IfcElement >::ptr IfcRelConnectsWithRealizingElements::RealizingElements() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcElement>(); }
void IfcRelConnectsWithRealizingElements::setRealizingElements(IfcTemplatedEntityList< IfcElement >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
bool IfcRelConnectsWithRealizingElements::hasConnectionType() const { return !data_->getArgument(8)->isNull(); }
std::string IfcRelConnectsWithRealizingElements::ConnectionType() const { return *data_->getArgument(8); }
void IfcRelConnectsWithRealizingElements::setConnectionType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcRelConnectsWithRealizingElements::declaration() const { return *IfcRelConnectsWithRealizingElements_type; }
Type::Enum IfcRelConnectsWithRealizingElements::Class() { return Type::IfcRelConnectsWithRealizingElements; }
IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(IfcAbstractEntity* e) : IfcRelConnectsElements((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsWithRealizingElements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcConnectionGeometry* v5_ConnectionGeometry, IfcElement* v6_RelatingElement, IfcElement* v7_RelatedElement, IfcTemplatedEntityList< IfcElement >::ptr v8_RealizingElements, boost::optional< std::string > v9_ConnectionType) : IfcRelConnectsElements((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_ConnectionGeometry)); e->setArgument(5,(v6_RelatingElement)); e->setArgument(6,(v7_RelatedElement)); e->setArgument(7,(v8_RealizingElements)->generalize()); if (v9_ConnectionType) { e->setArgument(8,(*v9_ConnectionType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelContainedInSpatialStructure
IfcTemplatedEntityList< IfcProduct >::ptr IfcRelContainedInSpatialStructure::RelatedElements() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcProduct>(); }
void IfcRelContainedInSpatialStructure::setRelatedElements(IfcTemplatedEntityList< IfcProduct >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
IfcSpatialStructureElement* IfcRelContainedInSpatialStructure::RelatingStructure() const { return (IfcSpatialStructureElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelContainedInSpatialStructure::setRelatingStructure(IfcSpatialStructureElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelContainedInSpatialStructure::declaration() const { return *IfcRelContainedInSpatialStructure_type; }
Type::Enum IfcRelContainedInSpatialStructure::Class() { return Type::IfcRelContainedInSpatialStructure; }
IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelContainedInSpatialStructure)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcProduct >::ptr v5_RelatedElements, IfcSpatialStructureElement* v6_RelatingStructure) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedElements)->generalize()); e->setArgument(5,(v6_RelatingStructure)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelCoversBldgElements
IfcElement* IfcRelCoversBldgElements::RelatingBuildingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelCoversBldgElements::setRelatingBuildingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcCovering >::ptr IfcRelCoversBldgElements::RelatedCoverings() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcCovering>(); }
void IfcRelCoversBldgElements::setRelatedCoverings(IfcTemplatedEntityList< IfcCovering >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcRelCoversBldgElements::declaration() const { return *IfcRelCoversBldgElements_type; }
Type::Enum IfcRelCoversBldgElements::Class() { return Type::IfcRelCoversBldgElements; }
IfcRelCoversBldgElements::IfcRelCoversBldgElements(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelCoversBldgElements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelCoversBldgElements::IfcRelCoversBldgElements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcElement* v5_RelatingBuildingElement, IfcTemplatedEntityList< IfcCovering >::ptr v6_RelatedCoverings) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingBuildingElement)); e->setArgument(5,(v6_RelatedCoverings)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelCoversSpaces
IfcSpace* IfcRelCoversSpaces::RelatedSpace() const { return (IfcSpace*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelCoversSpaces::setRelatedSpace(IfcSpace* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcCovering >::ptr IfcRelCoversSpaces::RelatedCoverings() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcCovering>(); }
void IfcRelCoversSpaces::setRelatedCoverings(IfcTemplatedEntityList< IfcCovering >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcRelCoversSpaces::declaration() const { return *IfcRelCoversSpaces_type; }
Type::Enum IfcRelCoversSpaces::Class() { return Type::IfcRelCoversSpaces; }
IfcRelCoversSpaces::IfcRelCoversSpaces(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelCoversSpaces)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelCoversSpaces::IfcRelCoversSpaces(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcSpace* v5_RelatedSpace, IfcTemplatedEntityList< IfcCovering >::ptr v6_RelatedCoverings) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedSpace)); e->setArgument(5,(v6_RelatedCoverings)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelDecomposes
IfcObjectDefinition* IfcRelDecomposes::RelatingObject() const { return (IfcObjectDefinition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelDecomposes::setRelatingObject(IfcObjectDefinition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcObjectDefinition >::ptr IfcRelDecomposes::RelatedObjects() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcObjectDefinition>(); }
void IfcRelDecomposes::setRelatedObjects(IfcTemplatedEntityList< IfcObjectDefinition >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcRelDecomposes::declaration() const { return *IfcRelDecomposes_type; }
Type::Enum IfcRelDecomposes::Class() { return Type::IfcRelDecomposes; }
IfcRelDecomposes::IfcRelDecomposes(IfcAbstractEntity* e) : IfcRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelDecomposes)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelDecomposes::IfcRelDecomposes(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcObjectDefinition* v5_RelatingObject, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v6_RelatedObjects) : IfcRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingObject)); e->setArgument(5,(v6_RelatedObjects)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelDefines
IfcTemplatedEntityList< IfcObject >::ptr IfcRelDefines::RelatedObjects() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcObject>(); }
void IfcRelDefines::setRelatedObjects(IfcTemplatedEntityList< IfcObject >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }


const IfcParse::entity& IfcRelDefines::declaration() const { return *IfcRelDefines_type; }
Type::Enum IfcRelDefines::Class() { return Type::IfcRelDefines; }
IfcRelDefines::IfcRelDefines(IfcAbstractEntity* e) : IfcRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelDefines)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelDefines::IfcRelDefines(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObject >::ptr v5_RelatedObjects) : IfcRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelDefinesByProperties
IfcPropertySetDefinition* IfcRelDefinesByProperties::RelatingPropertyDefinition() const { return (IfcPropertySetDefinition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelDefinesByProperties::setRelatingPropertyDefinition(IfcPropertySetDefinition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelDefinesByProperties::declaration() const { return *IfcRelDefinesByProperties_type; }
Type::Enum IfcRelDefinesByProperties::Class() { return Type::IfcRelDefinesByProperties; }
IfcRelDefinesByProperties::IfcRelDefinesByProperties(IfcAbstractEntity* e) : IfcRelDefines((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelDefinesByProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelDefinesByProperties::IfcRelDefinesByProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObject >::ptr v5_RelatedObjects, IfcPropertySetDefinition* v6_RelatingPropertyDefinition) : IfcRelDefines((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingPropertyDefinition)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelDefinesByType
IfcTypeObject* IfcRelDefinesByType::RelatingType() const { return (IfcTypeObject*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelDefinesByType::setRelatingType(IfcTypeObject* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelDefinesByType::declaration() const { return *IfcRelDefinesByType_type; }
Type::Enum IfcRelDefinesByType::Class() { return Type::IfcRelDefinesByType; }
IfcRelDefinesByType::IfcRelDefinesByType(IfcAbstractEntity* e) : IfcRelDefines((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelDefinesByType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelDefinesByType::IfcRelDefinesByType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObject >::ptr v5_RelatedObjects, IfcTypeObject* v6_RelatingType) : IfcRelDefines((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelFillsElement
IfcOpeningElement* IfcRelFillsElement::RelatingOpeningElement() const { return (IfcOpeningElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelFillsElement::setRelatingOpeningElement(IfcOpeningElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcElement* IfcRelFillsElement::RelatedBuildingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelFillsElement::setRelatedBuildingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelFillsElement::declaration() const { return *IfcRelFillsElement_type; }
Type::Enum IfcRelFillsElement::Class() { return Type::IfcRelFillsElement; }
IfcRelFillsElement::IfcRelFillsElement(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelFillsElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelFillsElement::IfcRelFillsElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcOpeningElement* v5_RelatingOpeningElement, IfcElement* v6_RelatedBuildingElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingOpeningElement)); e->setArgument(5,(v6_RelatedBuildingElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelFlowControlElements
IfcTemplatedEntityList< IfcDistributionControlElement >::ptr IfcRelFlowControlElements::RelatedControlElements() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcDistributionControlElement>(); }
void IfcRelFlowControlElements::setRelatedControlElements(IfcTemplatedEntityList< IfcDistributionControlElement >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
IfcDistributionFlowElement* IfcRelFlowControlElements::RelatingFlowElement() const { return (IfcDistributionFlowElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelFlowControlElements::setRelatingFlowElement(IfcDistributionFlowElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelFlowControlElements::declaration() const { return *IfcRelFlowControlElements_type; }
Type::Enum IfcRelFlowControlElements::Class() { return Type::IfcRelFlowControlElements; }
IfcRelFlowControlElements::IfcRelFlowControlElements(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelFlowControlElements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelFlowControlElements::IfcRelFlowControlElements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcDistributionControlElement >::ptr v5_RelatedControlElements, IfcDistributionFlowElement* v6_RelatingFlowElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedControlElements)->generalize()); e->setArgument(5,(v6_RelatingFlowElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelInteractionRequirements
bool IfcRelInteractionRequirements::hasDailyInteraction() const { return !data_->getArgument(4)->isNull(); }
double IfcRelInteractionRequirements::DailyInteraction() const { return *data_->getArgument(4); }
void IfcRelInteractionRequirements::setDailyInteraction(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcRelInteractionRequirements::hasImportanceRating() const { return !data_->getArgument(5)->isNull(); }
double IfcRelInteractionRequirements::ImportanceRating() const { return *data_->getArgument(5); }
void IfcRelInteractionRequirements::setImportanceRating(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRelInteractionRequirements::hasLocationOfInteraction() const { return !data_->getArgument(6)->isNull(); }
IfcSpatialStructureElement* IfcRelInteractionRequirements::LocationOfInteraction() const { return (IfcSpatialStructureElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelInteractionRequirements::setLocationOfInteraction(IfcSpatialStructureElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcSpaceProgram* IfcRelInteractionRequirements::RelatedSpaceProgram() const { return (IfcSpaceProgram*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcRelInteractionRequirements::setRelatedSpaceProgram(IfcSpaceProgram* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcSpaceProgram* IfcRelInteractionRequirements::RelatingSpaceProgram() const { return (IfcSpaceProgram*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcRelInteractionRequirements::setRelatingSpaceProgram(IfcSpaceProgram* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcRelInteractionRequirements::declaration() const { return *IfcRelInteractionRequirements_type; }
Type::Enum IfcRelInteractionRequirements::Class() { return Type::IfcRelInteractionRequirements; }
IfcRelInteractionRequirements::IfcRelInteractionRequirements(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelInteractionRequirements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelInteractionRequirements::IfcRelInteractionRequirements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_DailyInteraction, boost::optional< double > v6_ImportanceRating, IfcSpatialStructureElement* v7_LocationOfInteraction, IfcSpaceProgram* v8_RelatedSpaceProgram, IfcSpaceProgram* v9_RelatingSpaceProgram) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_DailyInteraction) { e->setArgument(4,(*v5_DailyInteraction)); } else { e->setArgument(4); } if (v6_ImportanceRating) { e->setArgument(5,(*v6_ImportanceRating)); } else { e->setArgument(5); } e->setArgument(6,(v7_LocationOfInteraction)); e->setArgument(7,(v8_RelatedSpaceProgram)); e->setArgument(8,(v9_RelatingSpaceProgram)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelNests


const IfcParse::entity& IfcRelNests::declaration() const { return *IfcRelNests_type; }
Type::Enum IfcRelNests::Class() { return Type::IfcRelNests; }
IfcRelNests::IfcRelNests(IfcAbstractEntity* e) : IfcRelDecomposes((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelNests)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelNests::IfcRelNests(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcObjectDefinition* v5_RelatingObject, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v6_RelatedObjects) : IfcRelDecomposes((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingObject)); e->setArgument(5,(v6_RelatedObjects)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelOccupiesSpaces


const IfcParse::entity& IfcRelOccupiesSpaces::declaration() const { return *IfcRelOccupiesSpaces_type; }
Type::Enum IfcRelOccupiesSpaces::Class() { return Type::IfcRelOccupiesSpaces; }
IfcRelOccupiesSpaces::IfcRelOccupiesSpaces(IfcAbstractEntity* e) : IfcRelAssignsToActor((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelOccupiesSpaces)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelOccupiesSpaces::IfcRelOccupiesSpaces(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcActor* v7_RelatingActor, IfcActorRole* v8_ActingRole) : IfcRelAssignsToActor((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingActor)); e->setArgument(7,(v8_ActingRole)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelOverridesProperties
IfcTemplatedEntityList< IfcProperty >::ptr IfcRelOverridesProperties::OverridingProperties() const { IfcEntityList::ptr es = *data_->getArgument(6); return es->as<IfcProperty>(); }
void IfcRelOverridesProperties::setOverridingProperties(IfcTemplatedEntityList< IfcProperty >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v->generalize()); }


const IfcParse::entity& IfcRelOverridesProperties::declaration() const { return *IfcRelOverridesProperties_type; }
Type::Enum IfcRelOverridesProperties::Class() { return Type::IfcRelOverridesProperties; }
IfcRelOverridesProperties::IfcRelOverridesProperties(IfcAbstractEntity* e) : IfcRelDefinesByProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelOverridesProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelOverridesProperties::IfcRelOverridesProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObject >::ptr v5_RelatedObjects, IfcPropertySetDefinition* v6_RelatingPropertyDefinition, IfcTemplatedEntityList< IfcProperty >::ptr v7_OverridingProperties) : IfcRelDefinesByProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingPropertyDefinition)); e->setArgument(6,(v7_OverridingProperties)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelProjectsElement
IfcElement* IfcRelProjectsElement::RelatingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelProjectsElement::setRelatingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcFeatureElementAddition* IfcRelProjectsElement::RelatedFeatureElement() const { return (IfcFeatureElementAddition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelProjectsElement::setRelatedFeatureElement(IfcFeatureElementAddition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelProjectsElement::declaration() const { return *IfcRelProjectsElement_type; }
Type::Enum IfcRelProjectsElement::Class() { return Type::IfcRelProjectsElement; }
IfcRelProjectsElement::IfcRelProjectsElement(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelProjectsElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelProjectsElement::IfcRelProjectsElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcElement* v5_RelatingElement, IfcFeatureElementAddition* v6_RelatedFeatureElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingElement)); e->setArgument(5,(v6_RelatedFeatureElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelReferencedInSpatialStructure
IfcTemplatedEntityList< IfcProduct >::ptr IfcRelReferencedInSpatialStructure::RelatedElements() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcProduct>(); }
void IfcRelReferencedInSpatialStructure::setRelatedElements(IfcTemplatedEntityList< IfcProduct >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
IfcSpatialStructureElement* IfcRelReferencedInSpatialStructure::RelatingStructure() const { return (IfcSpatialStructureElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelReferencedInSpatialStructure::setRelatingStructure(IfcSpatialStructureElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelReferencedInSpatialStructure::declaration() const { return *IfcRelReferencedInSpatialStructure_type; }
Type::Enum IfcRelReferencedInSpatialStructure::Class() { return Type::IfcRelReferencedInSpatialStructure; }
IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelReferencedInSpatialStructure)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcProduct >::ptr v5_RelatedElements, IfcSpatialStructureElement* v6_RelatingStructure) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedElements)->generalize()); e->setArgument(5,(v6_RelatingStructure)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelSchedulesCostItems


const IfcParse::entity& IfcRelSchedulesCostItems::declaration() const { return *IfcRelSchedulesCostItems_type; }
Type::Enum IfcRelSchedulesCostItems::Class() { return Type::IfcRelSchedulesCostItems; }
IfcRelSchedulesCostItems::IfcRelSchedulesCostItems(IfcAbstractEntity* e) : IfcRelAssignsToControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelSchedulesCostItems)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelSchedulesCostItems::IfcRelSchedulesCostItems(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcControl* v7_RelatingControl) : IfcRelAssignsToControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingControl)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelSequence
IfcProcess* IfcRelSequence::RelatingProcess() const { return (IfcProcess*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelSequence::setRelatingProcess(IfcProcess* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcProcess* IfcRelSequence::RelatedProcess() const { return (IfcProcess*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelSequence::setRelatedProcess(IfcProcess* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcRelSequence::TimeLag() const { return *data_->getArgument(6); }
void IfcRelSequence::setTimeLag(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcSequenceEnum::IfcSequenceEnum IfcRelSequence::SequenceType() const { return IfcSequenceEnum::FromString(*data_->getArgument(7)); }
void IfcRelSequence::setSequenceType(IfcSequenceEnum::IfcSequenceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcSequenceEnum::ToString(v)); }


const IfcParse::entity& IfcRelSequence::declaration() const { return *IfcRelSequence_type; }
Type::Enum IfcRelSequence::Class() { return Type::IfcRelSequence; }
IfcRelSequence::IfcRelSequence(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelSequence)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelSequence::IfcRelSequence(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcProcess* v5_RelatingProcess, IfcProcess* v6_RelatedProcess, double v7_TimeLag, IfcSequenceEnum::IfcSequenceEnum v8_SequenceType) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingProcess)); e->setArgument(5,(v6_RelatedProcess)); e->setArgument(6,(v7_TimeLag)); e->setArgument(7,v8_SequenceType,IfcSequenceEnum::ToString(v8_SequenceType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelServicesBuildings
IfcSystem* IfcRelServicesBuildings::RelatingSystem() const { return (IfcSystem*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelServicesBuildings::setRelatingSystem(IfcSystem* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcSpatialStructureElement >::ptr IfcRelServicesBuildings::RelatedBuildings() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcSpatialStructureElement>(); }
void IfcRelServicesBuildings::setRelatedBuildings(IfcTemplatedEntityList< IfcSpatialStructureElement >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcRelServicesBuildings::declaration() const { return *IfcRelServicesBuildings_type; }
Type::Enum IfcRelServicesBuildings::Class() { return Type::IfcRelServicesBuildings; }
IfcRelServicesBuildings::IfcRelServicesBuildings(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelServicesBuildings)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelServicesBuildings::IfcRelServicesBuildings(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcSystem* v5_RelatingSystem, IfcTemplatedEntityList< IfcSpatialStructureElement >::ptr v6_RelatedBuildings) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingSystem)); e->setArgument(5,(v6_RelatedBuildings)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelSpaceBoundary
IfcSpace* IfcRelSpaceBoundary::RelatingSpace() const { return (IfcSpace*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelSpaceBoundary::setRelatingSpace(IfcSpace* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcRelSpaceBoundary::hasRelatedBuildingElement() const { return !data_->getArgument(5)->isNull(); }
IfcElement* IfcRelSpaceBoundary::RelatedBuildingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelSpaceBoundary::setRelatedBuildingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRelSpaceBoundary::hasConnectionGeometry() const { return !data_->getArgument(6)->isNull(); }
IfcConnectionGeometry* IfcRelSpaceBoundary::ConnectionGeometry() const { return (IfcConnectionGeometry*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelSpaceBoundary::setConnectionGeometry(IfcConnectionGeometry* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum IfcRelSpaceBoundary::PhysicalOrVirtualBoundary() const { return IfcPhysicalOrVirtualEnum::FromString(*data_->getArgument(7)); }
void IfcRelSpaceBoundary::setPhysicalOrVirtualBoundary(IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcPhysicalOrVirtualEnum::ToString(v)); }
IfcInternalOrExternalEnum::IfcInternalOrExternalEnum IfcRelSpaceBoundary::InternalOrExternalBoundary() const { return IfcInternalOrExternalEnum::FromString(*data_->getArgument(8)); }
void IfcRelSpaceBoundary::setInternalOrExternalBoundary(IfcInternalOrExternalEnum::IfcInternalOrExternalEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcInternalOrExternalEnum::ToString(v)); }


const IfcParse::entity& IfcRelSpaceBoundary::declaration() const { return *IfcRelSpaceBoundary_type; }
Type::Enum IfcRelSpaceBoundary::Class() { return Type::IfcRelSpaceBoundary; }
IfcRelSpaceBoundary::IfcRelSpaceBoundary(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelSpaceBoundary)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelSpaceBoundary::IfcRelSpaceBoundary(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcSpace* v5_RelatingSpace, IfcElement* v6_RelatedBuildingElement, IfcConnectionGeometry* v7_ConnectionGeometry, IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum v8_PhysicalOrVirtualBoundary, IfcInternalOrExternalEnum::IfcInternalOrExternalEnum v9_InternalOrExternalBoundary) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingSpace)); e->setArgument(5,(v6_RelatedBuildingElement)); e->setArgument(6,(v7_ConnectionGeometry)); e->setArgument(7,v8_PhysicalOrVirtualBoundary,IfcPhysicalOrVirtualEnum::ToString(v8_PhysicalOrVirtualBoundary)); e->setArgument(8,v9_InternalOrExternalBoundary,IfcInternalOrExternalEnum::ToString(v9_InternalOrExternalBoundary)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelVoidsElement
IfcElement* IfcRelVoidsElement::RelatingBuildingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelVoidsElement::setRelatingBuildingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcFeatureElementSubtraction* IfcRelVoidsElement::RelatedOpeningElement() const { return (IfcFeatureElementSubtraction*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelVoidsElement::setRelatedOpeningElement(IfcFeatureElementSubtraction* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelVoidsElement::declaration() const { return *IfcRelVoidsElement_type; }
Type::Enum IfcRelVoidsElement::Class() { return Type::IfcRelVoidsElement; }
IfcRelVoidsElement::IfcRelVoidsElement(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelVoidsElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelVoidsElement::IfcRelVoidsElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcElement* v5_RelatingBuildingElement, IfcFeatureElementSubtraction* v6_RelatedOpeningElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingBuildingElement)); e->setArgument(5,(v6_RelatedOpeningElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelationship


const IfcParse::entity& IfcRelationship::declaration() const { return *IfcRelationship_type; }
Type::Enum IfcRelationship::Class() { return Type::IfcRelationship; }
IfcRelationship::IfcRelationship(IfcAbstractEntity* e) : IfcRoot((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelationship::IfcRelationship(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelaxation
double IfcRelaxation::RelaxationValue() const { return *data_->getArgument(0); }
void IfcRelaxation::setRelaxationValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcRelaxation::InitialStress() const { return *data_->getArgument(1); }
void IfcRelaxation::setInitialStress(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcRelaxation::declaration() const { return *IfcRelaxation_type; }
Type::Enum IfcRelaxation::Class() { return Type::IfcRelaxation; }
IfcRelaxation::IfcRelaxation(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRelaxation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelaxation::IfcRelaxation(double v1_RelaxationValue, double v2_InitialStress) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RelaxationValue)); e->setArgument(1,(v2_InitialStress)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRepresentation
IfcRepresentationContext* IfcRepresentation::ContextOfItems() const { return (IfcRepresentationContext*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcRepresentation::setContextOfItems(IfcRepresentationContext* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcRepresentation::hasRepresentationIdentifier() const { return !data_->getArgument(1)->isNull(); }
std::string IfcRepresentation::RepresentationIdentifier() const { return *data_->getArgument(1); }
void IfcRepresentation::setRepresentationIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcRepresentation::hasRepresentationType() const { return !data_->getArgument(2)->isNull(); }
std::string IfcRepresentation::RepresentationType() const { return *data_->getArgument(2); }
void IfcRepresentation::setRepresentationType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTemplatedEntityList< IfcRepresentationItem >::ptr IfcRepresentation::Items() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcRepresentationItem>(); }
void IfcRepresentation::setItems(IfcTemplatedEntityList< IfcRepresentationItem >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }

IfcRepresentationMap::list::ptr IfcRepresentation::RepresentationMap() const { return data_->getInverse(Type::IfcRepresentationMap, 1)->as<IfcRepresentationMap>(); }
IfcPresentationLayerAssignment::list::ptr IfcRepresentation::LayerAssignments() const { return data_->getInverse(Type::IfcPresentationLayerAssignment, 2)->as<IfcPresentationLayerAssignment>(); }
IfcProductRepresentation::list::ptr IfcRepresentation::OfProductRepresentation() const { return data_->getInverse(Type::IfcProductRepresentation, 2)->as<IfcProductRepresentation>(); }

const IfcParse::entity& IfcRepresentation::declaration() const { return *IfcRepresentation_type; }
Type::Enum IfcRepresentation::Class() { return Type::IfcRepresentation; }
IfcRepresentation::IfcRepresentation(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRepresentation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRepresentation::IfcRepresentation(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRepresentationContext
bool IfcRepresentationContext::hasContextIdentifier() const { return !data_->getArgument(0)->isNull(); }
std::string IfcRepresentationContext::ContextIdentifier() const { return *data_->getArgument(0); }
void IfcRepresentationContext::setContextIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcRepresentationContext::hasContextType() const { return !data_->getArgument(1)->isNull(); }
std::string IfcRepresentationContext::ContextType() const { return *data_->getArgument(1); }
void IfcRepresentationContext::setContextType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }

IfcRepresentation::list::ptr IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(Type::IfcRepresentation, 0)->as<IfcRepresentation>(); }

const IfcParse::entity& IfcRepresentationContext::declaration() const { return *IfcRepresentationContext_type; }
Type::Enum IfcRepresentationContext::Class() { return Type::IfcRepresentationContext; }
IfcRepresentationContext::IfcRepresentationContext(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRepresentationContext)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRepresentationContext::IfcRepresentationContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_ContextIdentifier) { e->setArgument(0,(*v1_ContextIdentifier)); } else { e->setArgument(0); } if (v2_ContextType) { e->setArgument(1,(*v2_ContextType)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRepresentationItem

IfcPresentationLayerAssignment::list::ptr IfcRepresentationItem::LayerAssignments() const { return data_->getInverse(Type::IfcPresentationLayerAssignment, 2)->as<IfcPresentationLayerAssignment>(); }
IfcStyledItem::list::ptr IfcRepresentationItem::StyledByItem() const { return data_->getInverse(Type::IfcStyledItem, 0)->as<IfcStyledItem>(); }

const IfcParse::entity& IfcRepresentationItem::declaration() const { return *IfcRepresentationItem_type; }
Type::Enum IfcRepresentationItem::Class() { return Type::IfcRepresentationItem; }
IfcRepresentationItem::IfcRepresentationItem(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRepresentationItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRepresentationItem::IfcRepresentationItem() : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRepresentationMap
IfcAxis2Placement* IfcRepresentationMap::MappingOrigin() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcRepresentationMap::setMappingOrigin(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcRepresentation* IfcRepresentationMap::MappedRepresentation() const { return (IfcRepresentation*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcRepresentationMap::setMappedRepresentation(IfcRepresentation* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }

IfcMappedItem::list::ptr IfcRepresentationMap::MapUsage() const { return data_->getInverse(Type::IfcMappedItem, 0)->as<IfcMappedItem>(); }

const IfcParse::entity& IfcRepresentationMap::declaration() const { return *IfcRepresentationMap_type; }
Type::Enum IfcRepresentationMap::Class() { return Type::IfcRepresentationMap; }
IfcRepresentationMap::IfcRepresentationMap(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRepresentationMap)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRepresentationMap::IfcRepresentationMap(IfcAxis2Placement* v1_MappingOrigin, IfcRepresentation* v2_MappedRepresentation) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_MappingOrigin)); e->setArgument(1,(v2_MappedRepresentation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcResource

IfcRelAssignsToResource::list::ptr IfcResource::ResourceOf() const { return data_->getInverse(Type::IfcRelAssignsToResource, 6)->as<IfcRelAssignsToResource>(); }

const IfcParse::entity& IfcResource::declaration() const { return *IfcResource_type; }
Type::Enum IfcResource::Class() { return Type::IfcResource; }
IfcResource::IfcResource(IfcAbstractEntity* e) : IfcObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcResource::IfcResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRevolvedAreaSolid
IfcAxis1Placement* IfcRevolvedAreaSolid::Axis() const { return (IfcAxis1Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcRevolvedAreaSolid::setAxis(IfcAxis1Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcRevolvedAreaSolid::Angle() const { return *data_->getArgument(3); }
void IfcRevolvedAreaSolid::setAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcRevolvedAreaSolid::declaration() const { return *IfcRevolvedAreaSolid_type; }
Type::Enum IfcRevolvedAreaSolid::Class() { return Type::IfcRevolvedAreaSolid; }
IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(IfcAbstractEntity* e) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRevolvedAreaSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(IfcProfileDef* v1_SweptArea, IfcAxis2Placement3D* v2_Position, IfcAxis1Placement* v3_Axis, double v4_Angle) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptArea)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_Axis)); e->setArgument(3,(v4_Angle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRibPlateProfileProperties
bool IfcRibPlateProfileProperties::hasThickness() const { return !data_->getArgument(2)->isNull(); }
double IfcRibPlateProfileProperties::Thickness() const { return *data_->getArgument(2); }
void IfcRibPlateProfileProperties::setThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcRibPlateProfileProperties::hasRibHeight() const { return !data_->getArgument(3)->isNull(); }
double IfcRibPlateProfileProperties::RibHeight() const { return *data_->getArgument(3); }
void IfcRibPlateProfileProperties::setRibHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcRibPlateProfileProperties::hasRibWidth() const { return !data_->getArgument(4)->isNull(); }
double IfcRibPlateProfileProperties::RibWidth() const { return *data_->getArgument(4); }
void IfcRibPlateProfileProperties::setRibWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcRibPlateProfileProperties::hasRibSpacing() const { return !data_->getArgument(5)->isNull(); }
double IfcRibPlateProfileProperties::RibSpacing() const { return *data_->getArgument(5); }
void IfcRibPlateProfileProperties::setRibSpacing(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcRibPlateDirectionEnum::IfcRibPlateDirectionEnum IfcRibPlateProfileProperties::Direction() const { return IfcRibPlateDirectionEnum::FromString(*data_->getArgument(6)); }
void IfcRibPlateProfileProperties::setDirection(IfcRibPlateDirectionEnum::IfcRibPlateDirectionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcRibPlateDirectionEnum::ToString(v)); }


const IfcParse::entity& IfcRibPlateProfileProperties::declaration() const { return *IfcRibPlateProfileProperties_type; }
Type::Enum IfcRibPlateProfileProperties::Class() { return Type::IfcRibPlateProfileProperties; }
IfcRibPlateProfileProperties::IfcRibPlateProfileProperties(IfcAbstractEntity* e) : IfcProfileProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRibPlateProfileProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRibPlateProfileProperties::IfcRibPlateProfileProperties(boost::optional< std::string > v1_ProfileName, IfcProfileDef* v2_ProfileDefinition, boost::optional< double > v3_Thickness, boost::optional< double > v4_RibHeight, boost::optional< double > v5_RibWidth, boost::optional< double > v6_RibSpacing, IfcRibPlateDirectionEnum::IfcRibPlateDirectionEnum v7_Direction) : IfcProfileProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_ProfileName) { e->setArgument(0,(*v1_ProfileName)); } else { e->setArgument(0); } e->setArgument(1,(v2_ProfileDefinition)); if (v3_Thickness) { e->setArgument(2,(*v3_Thickness)); } else { e->setArgument(2); } if (v4_RibHeight) { e->setArgument(3,(*v4_RibHeight)); } else { e->setArgument(3); } if (v5_RibWidth) { e->setArgument(4,(*v5_RibWidth)); } else { e->setArgument(4); } if (v6_RibSpacing) { e->setArgument(5,(*v6_RibSpacing)); } else { e->setArgument(5); } e->setArgument(6,v7_Direction,IfcRibPlateDirectionEnum::ToString(v7_Direction)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRightCircularCone
double IfcRightCircularCone::Height() const { return *data_->getArgument(1); }
void IfcRightCircularCone::setHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcRightCircularCone::BottomRadius() const { return *data_->getArgument(2); }
void IfcRightCircularCone::setBottomRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcRightCircularCone::declaration() const { return *IfcRightCircularCone_type; }
Type::Enum IfcRightCircularCone::Class() { return Type::IfcRightCircularCone; }
IfcRightCircularCone::IfcRightCircularCone(IfcAbstractEntity* e) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRightCircularCone)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRightCircularCone::IfcRightCircularCone(IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_BottomRadius) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_Height)); e->setArgument(2,(v3_BottomRadius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRightCircularCylinder
double IfcRightCircularCylinder::Height() const { return *data_->getArgument(1); }
void IfcRightCircularCylinder::setHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcRightCircularCylinder::Radius() const { return *data_->getArgument(2); }
void IfcRightCircularCylinder::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcRightCircularCylinder::declaration() const { return *IfcRightCircularCylinder_type; }
Type::Enum IfcRightCircularCylinder::Class() { return Type::IfcRightCircularCylinder; }
IfcRightCircularCylinder::IfcRightCircularCylinder(IfcAbstractEntity* e) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRightCircularCylinder)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRightCircularCylinder::IfcRightCircularCylinder(IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_Radius) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_Height)); e->setArgument(2,(v3_Radius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRoof
IfcRoofTypeEnum::IfcRoofTypeEnum IfcRoof::ShapeType() const { return IfcRoofTypeEnum::FromString(*data_->getArgument(8)); }
void IfcRoof::setShapeType(IfcRoofTypeEnum::IfcRoofTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcRoofTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRoof::declaration() const { return *IfcRoof_type; }
Type::Enum IfcRoof::Class() { return Type::IfcRoof; }
IfcRoof::IfcRoof(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRoof)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRoof::IfcRoof(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, IfcRoofTypeEnum::IfcRoofTypeEnum v9_ShapeType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } e->setArgument(8,v9_ShapeType,IfcRoofTypeEnum::ToString(v9_ShapeType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRoot
std::string IfcRoot::GlobalId() const { return *data_->getArgument(0); }
void IfcRoot::setGlobalId(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcOwnerHistory* IfcRoot::OwnerHistory() const { return (IfcOwnerHistory*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcRoot::setOwnerHistory(IfcOwnerHistory* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcRoot::hasName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcRoot::Name() const { return *data_->getArgument(2); }
void IfcRoot::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcRoot::hasDescription() const { return !data_->getArgument(3)->isNull(); }
std::string IfcRoot::Description() const { return *data_->getArgument(3); }
void IfcRoot::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcRoot::declaration() const { return *IfcRoot_type; }
Type::Enum IfcRoot::Class() { return Type::IfcRoot; }
IfcRoot::IfcRoot(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRoot)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRoot::IfcRoot(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRoundedEdgeFeature
bool IfcRoundedEdgeFeature::hasRadius() const { return !data_->getArgument(9)->isNull(); }
double IfcRoundedEdgeFeature::Radius() const { return *data_->getArgument(9); }
void IfcRoundedEdgeFeature::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcRoundedEdgeFeature::declaration() const { return *IfcRoundedEdgeFeature_type; }
Type::Enum IfcRoundedEdgeFeature::Class() { return Type::IfcRoundedEdgeFeature; }
IfcRoundedEdgeFeature::IfcRoundedEdgeFeature(IfcAbstractEntity* e) : IfcEdgeFeature((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRoundedEdgeFeature)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRoundedEdgeFeature::IfcRoundedEdgeFeature(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_FeatureLength, boost::optional< double > v10_Radius) : IfcEdgeFeature((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_FeatureLength) { e->setArgument(8,(*v9_FeatureLength)); } else { e->setArgument(8); } if (v10_Radius) { e->setArgument(9,(*v10_Radius)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRoundedRectangleProfileDef
double IfcRoundedRectangleProfileDef::RoundingRadius() const { return *data_->getArgument(5); }
void IfcRoundedRectangleProfileDef::setRoundingRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRoundedRectangleProfileDef::declaration() const { return *IfcRoundedRectangleProfileDef_type; }
Type::Enum IfcRoundedRectangleProfileDef::Class() { return Type::IfcRoundedRectangleProfileDef; }
IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(IfcAbstractEntity* e) : IfcRectangleProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRoundedRectangleProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_RoundingRadius) : IfcRectangleProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_XDim)); e->setArgument(4,(v5_YDim)); e->setArgument(5,(v6_RoundingRadius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSIUnit
bool IfcSIUnit::hasPrefix() const { return !data_->getArgument(2)->isNull(); }
IfcSIPrefix::IfcSIPrefix IfcSIUnit::Prefix() const { return IfcSIPrefix::FromString(*data_->getArgument(2)); }
void IfcSIUnit::setPrefix(IfcSIPrefix::IfcSIPrefix v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcSIPrefix::ToString(v)); }
IfcSIUnitName::IfcSIUnitName IfcSIUnit::Name() const { return IfcSIUnitName::FromString(*data_->getArgument(3)); }
void IfcSIUnit::setName(IfcSIUnitName::IfcSIUnitName v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v,IfcSIUnitName::ToString(v)); }


const IfcParse::entity& IfcSIUnit::declaration() const { return *IfcSIUnit_type; }
Type::Enum IfcSIUnit::Class() { return Type::IfcSIUnit; }
IfcSIUnit::IfcSIUnit(IfcAbstractEntity* e) : IfcNamedUnit((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSIUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSIUnit::IfcSIUnit(IfcUnitEnum::IfcUnitEnum v2_UnitType, boost::optional< IfcSIPrefix::IfcSIPrefix > v3_Prefix, IfcSIUnitName::IfcSIUnitName v4_Name) : IfcNamedUnit((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgumentDerived(0); e->setArgument(1,v2_UnitType,IfcUnitEnum::ToString(v2_UnitType)); if (v3_Prefix) { e->setArgument(2,*v3_Prefix,IfcSIPrefix::ToString(*v3_Prefix)); } else { e->setArgument(2); } e->setArgument(3,v4_Name,IfcSIUnitName::ToString(v4_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSanitaryTerminalType
IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum IfcSanitaryTerminalType::PredefinedType() const { return IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSanitaryTerminalType::setPredefinedType(IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSanitaryTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSanitaryTerminalType::declaration() const { return *IfcSanitaryTerminalType_type; }
Type::Enum IfcSanitaryTerminalType::Class() { return Type::IfcSanitaryTerminalType; }
IfcSanitaryTerminalType::IfcSanitaryTerminalType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSanitaryTerminalType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSanitaryTerminalTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcScheduleTimeControl
bool IfcScheduleTimeControl::hasActualStart() const { return !data_->getArgument(5)->isNull(); }
IfcDateTimeSelect* IfcScheduleTimeControl::ActualStart() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcScheduleTimeControl::setActualStart(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcScheduleTimeControl::hasEarlyStart() const { return !data_->getArgument(6)->isNull(); }
IfcDateTimeSelect* IfcScheduleTimeControl::EarlyStart() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcScheduleTimeControl::setEarlyStart(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcScheduleTimeControl::hasLateStart() const { return !data_->getArgument(7)->isNull(); }
IfcDateTimeSelect* IfcScheduleTimeControl::LateStart() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcScheduleTimeControl::setLateStart(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcScheduleTimeControl::hasScheduleStart() const { return !data_->getArgument(8)->isNull(); }
IfcDateTimeSelect* IfcScheduleTimeControl::ScheduleStart() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcScheduleTimeControl::setScheduleStart(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcScheduleTimeControl::hasActualFinish() const { return !data_->getArgument(9)->isNull(); }
IfcDateTimeSelect* IfcScheduleTimeControl::ActualFinish() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcScheduleTimeControl::setActualFinish(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcScheduleTimeControl::hasEarlyFinish() const { return !data_->getArgument(10)->isNull(); }
IfcDateTimeSelect* IfcScheduleTimeControl::EarlyFinish() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcScheduleTimeControl::setEarlyFinish(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcScheduleTimeControl::hasLateFinish() const { return !data_->getArgument(11)->isNull(); }
IfcDateTimeSelect* IfcScheduleTimeControl::LateFinish() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(11))); }
void IfcScheduleTimeControl::setLateFinish(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcScheduleTimeControl::hasScheduleFinish() const { return !data_->getArgument(12)->isNull(); }
IfcDateTimeSelect* IfcScheduleTimeControl::ScheduleFinish() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(12))); }
void IfcScheduleTimeControl::setScheduleFinish(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcScheduleTimeControl::hasScheduleDuration() const { return !data_->getArgument(13)->isNull(); }
double IfcScheduleTimeControl::ScheduleDuration() const { return *data_->getArgument(13); }
void IfcScheduleTimeControl::setScheduleDuration(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcScheduleTimeControl::hasActualDuration() const { return !data_->getArgument(14)->isNull(); }
double IfcScheduleTimeControl::ActualDuration() const { return *data_->getArgument(14); }
void IfcScheduleTimeControl::setActualDuration(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcScheduleTimeControl::hasRemainingTime() const { return !data_->getArgument(15)->isNull(); }
double IfcScheduleTimeControl::RemainingTime() const { return *data_->getArgument(15); }
void IfcScheduleTimeControl::setRemainingTime(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }
bool IfcScheduleTimeControl::hasFreeFloat() const { return !data_->getArgument(16)->isNull(); }
double IfcScheduleTimeControl::FreeFloat() const { return *data_->getArgument(16); }
void IfcScheduleTimeControl::setFreeFloat(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v); }
bool IfcScheduleTimeControl::hasTotalFloat() const { return !data_->getArgument(17)->isNull(); }
double IfcScheduleTimeControl::TotalFloat() const { return *data_->getArgument(17); }
void IfcScheduleTimeControl::setTotalFloat(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(17,v); }
bool IfcScheduleTimeControl::hasIsCritical() const { return !data_->getArgument(18)->isNull(); }
bool IfcScheduleTimeControl::IsCritical() const { return *data_->getArgument(18); }
void IfcScheduleTimeControl::setIsCritical(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(18,v); }
bool IfcScheduleTimeControl::hasStatusTime() const { return !data_->getArgument(19)->isNull(); }
IfcDateTimeSelect* IfcScheduleTimeControl::StatusTime() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(19))); }
void IfcScheduleTimeControl::setStatusTime(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(19,v); }
bool IfcScheduleTimeControl::hasStartFloat() const { return !data_->getArgument(20)->isNull(); }
double IfcScheduleTimeControl::StartFloat() const { return *data_->getArgument(20); }
void IfcScheduleTimeControl::setStartFloat(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(20,v); }
bool IfcScheduleTimeControl::hasFinishFloat() const { return !data_->getArgument(21)->isNull(); }
double IfcScheduleTimeControl::FinishFloat() const { return *data_->getArgument(21); }
void IfcScheduleTimeControl::setFinishFloat(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(21,v); }
bool IfcScheduleTimeControl::hasCompletion() const { return !data_->getArgument(22)->isNull(); }
double IfcScheduleTimeControl::Completion() const { return *data_->getArgument(22); }
void IfcScheduleTimeControl::setCompletion(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(22,v); }

IfcRelAssignsTasks::list::ptr IfcScheduleTimeControl::ScheduleTimeControlAssigned() const { return data_->getInverse(Type::IfcRelAssignsTasks, 7)->as<IfcRelAssignsTasks>(); }

const IfcParse::entity& IfcScheduleTimeControl::declaration() const { return *IfcScheduleTimeControl_type; }
Type::Enum IfcScheduleTimeControl::Class() { return Type::IfcScheduleTimeControl; }
IfcScheduleTimeControl::IfcScheduleTimeControl(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcScheduleTimeControl)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcScheduleTimeControl::IfcScheduleTimeControl(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcDateTimeSelect* v6_ActualStart, IfcDateTimeSelect* v7_EarlyStart, IfcDateTimeSelect* v8_LateStart, IfcDateTimeSelect* v9_ScheduleStart, IfcDateTimeSelect* v10_ActualFinish, IfcDateTimeSelect* v11_EarlyFinish, IfcDateTimeSelect* v12_LateFinish, IfcDateTimeSelect* v13_ScheduleFinish, boost::optional< double > v14_ScheduleDuration, boost::optional< double > v15_ActualDuration, boost::optional< double > v16_RemainingTime, boost::optional< double > v17_FreeFloat, boost::optional< double > v18_TotalFloat, boost::optional< bool > v19_IsCritical, IfcDateTimeSelect* v20_StatusTime, boost::optional< double > v21_StartFloat, boost::optional< double > v22_FinishFloat, boost::optional< double > v23_Completion) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ActualStart)); e->setArgument(6,(v7_EarlyStart)); e->setArgument(7,(v8_LateStart)); e->setArgument(8,(v9_ScheduleStart)); e->setArgument(9,(v10_ActualFinish)); e->setArgument(10,(v11_EarlyFinish)); e->setArgument(11,(v12_LateFinish)); e->setArgument(12,(v13_ScheduleFinish)); if (v14_ScheduleDuration) { e->setArgument(13,(*v14_ScheduleDuration)); } else { e->setArgument(13); } if (v15_ActualDuration) { e->setArgument(14,(*v15_ActualDuration)); } else { e->setArgument(14); } if (v16_RemainingTime) { e->setArgument(15,(*v16_RemainingTime)); } else { e->setArgument(15); } if (v17_FreeFloat) { e->setArgument(16,(*v17_FreeFloat)); } else { e->setArgument(16); } if (v18_TotalFloat) { e->setArgument(17,(*v18_TotalFloat)); } else { e->setArgument(17); } if (v19_IsCritical) { e->setArgument(18,(*v19_IsCritical)); } else { e->setArgument(18); } e->setArgument(19,(v20_StatusTime)); if (v21_StartFloat) { e->setArgument(20,(*v21_StartFloat)); } else { e->setArgument(20); } if (v22_FinishFloat) { e->setArgument(21,(*v22_FinishFloat)); } else { e->setArgument(21); } if (v23_Completion) { e->setArgument(22,(*v23_Completion)); } else { e->setArgument(22); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSectionProperties
IfcSectionTypeEnum::IfcSectionTypeEnum IfcSectionProperties::SectionType() const { return IfcSectionTypeEnum::FromString(*data_->getArgument(0)); }
void IfcSectionProperties::setSectionType(IfcSectionTypeEnum::IfcSectionTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcSectionTypeEnum::ToString(v)); }
IfcProfileDef* IfcSectionProperties::StartProfile() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcSectionProperties::setStartProfile(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcSectionProperties::hasEndProfile() const { return !data_->getArgument(2)->isNull(); }
IfcProfileDef* IfcSectionProperties::EndProfile() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSectionProperties::setEndProfile(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcSectionProperties::declaration() const { return *IfcSectionProperties_type; }
Type::Enum IfcSectionProperties::Class() { return Type::IfcSectionProperties; }
IfcSectionProperties::IfcSectionProperties(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcSectionProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSectionProperties::IfcSectionProperties(IfcSectionTypeEnum::IfcSectionTypeEnum v1_SectionType, IfcProfileDef* v2_StartProfile, IfcProfileDef* v3_EndProfile) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_SectionType,IfcSectionTypeEnum::ToString(v1_SectionType)); e->setArgument(1,(v2_StartProfile)); e->setArgument(2,(v3_EndProfile)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSectionReinforcementProperties
double IfcSectionReinforcementProperties::LongitudinalStartPosition() const { return *data_->getArgument(0); }
void IfcSectionReinforcementProperties::setLongitudinalStartPosition(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcSectionReinforcementProperties::LongitudinalEndPosition() const { return *data_->getArgument(1); }
void IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcSectionReinforcementProperties::hasTransversePosition() const { return !data_->getArgument(2)->isNull(); }
double IfcSectionReinforcementProperties::TransversePosition() const { return *data_->getArgument(2); }
void IfcSectionReinforcementProperties::setTransversePosition(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum IfcSectionReinforcementProperties::ReinforcementRole() const { return IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); }
void IfcSectionReinforcementProperties::setReinforcementRole(IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v,IfcReinforcingBarRoleEnum::ToString(v)); }
IfcSectionProperties* IfcSectionReinforcementProperties::SectionDefinition() const { return (IfcSectionProperties*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcSectionReinforcementProperties::setSectionDefinition(IfcSectionProperties* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcReinforcementBarProperties >::ptr IfcSectionReinforcementProperties::CrossSectionReinforcementDefinitions() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcReinforcementBarProperties>(); }
void IfcSectionReinforcementProperties::setCrossSectionReinforcementDefinitions(IfcTemplatedEntityList< IfcReinforcementBarProperties >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcSectionReinforcementProperties::declaration() const { return *IfcSectionReinforcementProperties_type; }
Type::Enum IfcSectionReinforcementProperties::Class() { return Type::IfcSectionReinforcementProperties; }
IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcSectionReinforcementProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(double v1_LongitudinalStartPosition, double v2_LongitudinalEndPosition, boost::optional< double > v3_TransversePosition, IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum v4_ReinforcementRole, IfcSectionProperties* v5_SectionDefinition, IfcTemplatedEntityList< IfcReinforcementBarProperties >::ptr v6_CrossSectionReinforcementDefinitions) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_LongitudinalStartPosition)); e->setArgument(1,(v2_LongitudinalEndPosition)); if (v3_TransversePosition) { e->setArgument(2,(*v3_TransversePosition)); } else { e->setArgument(2); } e->setArgument(3,v4_ReinforcementRole,IfcReinforcingBarRoleEnum::ToString(v4_ReinforcementRole)); e->setArgument(4,(v5_SectionDefinition)); e->setArgument(5,(v6_CrossSectionReinforcementDefinitions)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSectionedSpine
IfcCompositeCurve* IfcSectionedSpine::SpineCurve() const { return (IfcCompositeCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSectionedSpine::setSpineCurve(IfcCompositeCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcProfileDef >::ptr IfcSectionedSpine::CrossSections() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcProfileDef>(); }
void IfcSectionedSpine::setCrossSections(IfcTemplatedEntityList< IfcProfileDef >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
IfcTemplatedEntityList< IfcAxis2Placement3D >::ptr IfcSectionedSpine::CrossSectionPositions() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcAxis2Placement3D>(); }
void IfcSectionedSpine::setCrossSectionPositions(IfcTemplatedEntityList< IfcAxis2Placement3D >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }


const IfcParse::entity& IfcSectionedSpine::declaration() const { return *IfcSectionedSpine_type; }
Type::Enum IfcSectionedSpine::Class() { return Type::IfcSectionedSpine; }
IfcSectionedSpine::IfcSectionedSpine(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSectionedSpine)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSectionedSpine::IfcSectionedSpine(IfcCompositeCurve* v1_SpineCurve, IfcTemplatedEntityList< IfcProfileDef >::ptr v2_CrossSections, IfcTemplatedEntityList< IfcAxis2Placement3D >::ptr v3_CrossSectionPositions) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SpineCurve)); e->setArgument(1,(v2_CrossSections)->generalize()); e->setArgument(2,(v3_CrossSectionPositions)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSensorType
IfcSensorTypeEnum::IfcSensorTypeEnum IfcSensorType::PredefinedType() const { return IfcSensorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSensorType::setPredefinedType(IfcSensorTypeEnum::IfcSensorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSensorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSensorType::declaration() const { return *IfcSensorType_type; }
Type::Enum IfcSensorType::Class() { return Type::IfcSensorType; }
IfcSensorType::IfcSensorType(IfcAbstractEntity* e) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSensorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSensorType::IfcSensorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSensorTypeEnum::IfcSensorTypeEnum v10_PredefinedType) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSensorTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcServiceLife
IfcServiceLifeTypeEnum::IfcServiceLifeTypeEnum IfcServiceLife::ServiceLifeType() const { return IfcServiceLifeTypeEnum::FromString(*data_->getArgument(5)); }
void IfcServiceLife::setServiceLifeType(IfcServiceLifeTypeEnum::IfcServiceLifeTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcServiceLifeTypeEnum::ToString(v)); }
double IfcServiceLife::ServiceLifeDuration() const { return *data_->getArgument(6); }
void IfcServiceLife::setServiceLifeDuration(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcServiceLife::declaration() const { return *IfcServiceLife_type; }
Type::Enum IfcServiceLife::Class() { return Type::IfcServiceLife; }
IfcServiceLife::IfcServiceLife(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcServiceLife)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcServiceLife::IfcServiceLife(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcServiceLifeTypeEnum::IfcServiceLifeTypeEnum v6_ServiceLifeType, double v7_ServiceLifeDuration) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,v6_ServiceLifeType,IfcServiceLifeTypeEnum::ToString(v6_ServiceLifeType)); e->setArgument(6,(v7_ServiceLifeDuration)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcServiceLifeFactor
IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorTypeEnum IfcServiceLifeFactor::PredefinedType() const { return IfcServiceLifeFactorTypeEnum::FromString(*data_->getArgument(4)); }
void IfcServiceLifeFactor::setPredefinedType(IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcServiceLifeFactorTypeEnum::ToString(v)); }
bool IfcServiceLifeFactor::hasUpperValue() const { return !data_->getArgument(5)->isNull(); }
IfcMeasureValue* IfcServiceLifeFactor::UpperValue() const { return (IfcMeasureValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcServiceLifeFactor::setUpperValue(IfcMeasureValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcMeasureValue* IfcServiceLifeFactor::MostUsedValue() const { return (IfcMeasureValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcServiceLifeFactor::setMostUsedValue(IfcMeasureValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcServiceLifeFactor::hasLowerValue() const { return !data_->getArgument(7)->isNull(); }
IfcMeasureValue* IfcServiceLifeFactor::LowerValue() const { return (IfcMeasureValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcServiceLifeFactor::setLowerValue(IfcMeasureValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcServiceLifeFactor::declaration() const { return *IfcServiceLifeFactor_type; }
Type::Enum IfcServiceLifeFactor::Class() { return Type::IfcServiceLifeFactor; }
IfcServiceLifeFactor::IfcServiceLifeFactor(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcServiceLifeFactor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcServiceLifeFactor::IfcServiceLifeFactor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorTypeEnum v5_PredefinedType, IfcMeasureValue* v6_UpperValue, IfcMeasureValue* v7_MostUsedValue, IfcMeasureValue* v8_LowerValue) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,v5_PredefinedType,IfcServiceLifeFactorTypeEnum::ToString(v5_PredefinedType)); e->setArgument(5,(v6_UpperValue)); e->setArgument(6,(v7_MostUsedValue)); e->setArgument(7,(v8_LowerValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcShapeAspect
IfcTemplatedEntityList< IfcShapeModel >::ptr IfcShapeAspect::ShapeRepresentations() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcShapeModel>(); }
void IfcShapeAspect::setShapeRepresentations(IfcTemplatedEntityList< IfcShapeModel >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
bool IfcShapeAspect::hasName() const { return !data_->getArgument(1)->isNull(); }
std::string IfcShapeAspect::Name() const { return *data_->getArgument(1); }
void IfcShapeAspect::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcShapeAspect::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcShapeAspect::Description() const { return *data_->getArgument(2); }
void IfcShapeAspect::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
boost::logic::tribool IfcShapeAspect::ProductDefinitional() const { return *data_->getArgument(3); }
void IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
IfcProductDefinitionShape* IfcShapeAspect::PartOfProductDefinitionShape() const { return (IfcProductDefinitionShape*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcShapeAspect::setPartOfProductDefinitionShape(IfcProductDefinitionShape* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcShapeAspect::declaration() const { return *IfcShapeAspect_type; }
Type::Enum IfcShapeAspect::Class() { return Type::IfcShapeAspect; }
IfcShapeAspect::IfcShapeAspect(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcShapeAspect)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcShapeAspect::IfcShapeAspect(IfcTemplatedEntityList< IfcShapeModel >::ptr v1_ShapeRepresentations, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, boost::logic::tribool v4_ProductDefinitional, IfcProductDefinitionShape* v5_PartOfProductDefinitionShape) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ShapeRepresentations)->generalize()); if (v2_Name) { e->setArgument(1,(*v2_Name)); } else { e->setArgument(1); } if (v3_Description) { e->setArgument(2,(*v3_Description)); } else { e->setArgument(2); } e->setArgument(3,(v4_ProductDefinitional)); e->setArgument(4,(v5_PartOfProductDefinitionShape)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcShapeModel

IfcShapeAspect::list::ptr IfcShapeModel::OfShapeAspect() const { return data_->getInverse(Type::IfcShapeAspect, 0)->as<IfcShapeAspect>(); }

const IfcParse::entity& IfcShapeModel::declaration() const { return *IfcShapeModel_type; }
Type::Enum IfcShapeModel::Class() { return Type::IfcShapeModel; }
IfcShapeModel::IfcShapeModel(IfcAbstractEntity* e) : IfcRepresentation((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcShapeModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcShapeModel::IfcShapeModel(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcRepresentation((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcShapeRepresentation


const IfcParse::entity& IfcShapeRepresentation::declaration() const { return *IfcShapeRepresentation_type; }
Type::Enum IfcShapeRepresentation::Class() { return Type::IfcShapeRepresentation; }
IfcShapeRepresentation::IfcShapeRepresentation(IfcAbstractEntity* e) : IfcShapeModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcShapeRepresentation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcShapeRepresentation::IfcShapeRepresentation(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcShapeModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcShellBasedSurfaceModel
IfcEntityList::ptr IfcShellBasedSurfaceModel::SbsmBoundary() const { return *data_->getArgument(0); }
void IfcShellBasedSurfaceModel::setSbsmBoundary(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcShellBasedSurfaceModel::declaration() const { return *IfcShellBasedSurfaceModel_type; }
Type::Enum IfcShellBasedSurfaceModel::Class() { return Type::IfcShellBasedSurfaceModel; }
IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcShellBasedSurfaceModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(IfcEntityList::ptr v1_SbsmBoundary) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SbsmBoundary)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSimpleProperty


const IfcParse::entity& IfcSimpleProperty::declaration() const { return *IfcSimpleProperty_type; }
Type::Enum IfcSimpleProperty::Class() { return Type::IfcSimpleProperty; }
IfcSimpleProperty::IfcSimpleProperty(IfcAbstractEntity* e) : IfcProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSimpleProperty)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSite
bool IfcSite::hasRefLatitude() const { return !data_->getArgument(9)->isNull(); }
std::vector< int > /*[3:4]*/ IfcSite::RefLatitude() const { return *data_->getArgument(9); }
void IfcSite::setRefLatitude(std::vector< int > /*[3:4]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcSite::hasRefLongitude() const { return !data_->getArgument(10)->isNull(); }
std::vector< int > /*[3:4]*/ IfcSite::RefLongitude() const { return *data_->getArgument(10); }
void IfcSite::setRefLongitude(std::vector< int > /*[3:4]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcSite::hasRefElevation() const { return !data_->getArgument(11)->isNull(); }
double IfcSite::RefElevation() const { return *data_->getArgument(11); }
void IfcSite::setRefElevation(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcSite::hasLandTitleNumber() const { return !data_->getArgument(12)->isNull(); }
std::string IfcSite::LandTitleNumber() const { return *data_->getArgument(12); }
void IfcSite::setLandTitleNumber(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcSite::hasSiteAddress() const { return !data_->getArgument(13)->isNull(); }
IfcPostalAddress* IfcSite::SiteAddress() const { return (IfcPostalAddress*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(13))); }
void IfcSite::setSiteAddress(IfcPostalAddress* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }


const IfcParse::entity& IfcSite::declaration() const { return *IfcSite_type; }
Type::Enum IfcSite::Class() { return Type::IfcSite; }
IfcSite::IfcSite(IfcAbstractEntity* e) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSite)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSite::IfcSite(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, IfcElementCompositionEnum::IfcElementCompositionEnum v9_CompositionType, boost::optional< std::vector< int > /*[3:4]*/ > v10_RefLatitude, boost::optional< std::vector< int > /*[3:4]*/ > v11_RefLongitude, boost::optional< double > v12_RefElevation, boost::optional< std::string > v13_LandTitleNumber, IfcPostalAddress* v14_SiteAddress) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } e->setArgument(8,v9_CompositionType,IfcElementCompositionEnum::ToString(v9_CompositionType)); if (v10_RefLatitude) { e->setArgument(9,(*v10_RefLatitude)); } else { e->setArgument(9); } if (v11_RefLongitude) { e->setArgument(10,(*v11_RefLongitude)); } else { e->setArgument(10); } if (v12_RefElevation) { e->setArgument(11,(*v12_RefElevation)); } else { e->setArgument(11); } if (v13_LandTitleNumber) { e->setArgument(12,(*v13_LandTitleNumber)); } else { e->setArgument(12); } e->setArgument(13,(v14_SiteAddress)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSlab
bool IfcSlab::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcSlabTypeEnum::IfcSlabTypeEnum IfcSlab::PredefinedType() const { return IfcSlabTypeEnum::FromString(*data_->getArgument(8)); }
void IfcSlab::setPredefinedType(IfcSlabTypeEnum::IfcSlabTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcSlabTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSlab::declaration() const { return *IfcSlab_type; }
Type::Enum IfcSlab::Class() { return Type::IfcSlab; }
IfcSlab::IfcSlab(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSlab)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSlab::IfcSlab(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcSlabTypeEnum::IfcSlabTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSlabTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSlabType
IfcSlabTypeEnum::IfcSlabTypeEnum IfcSlabType::PredefinedType() const { return IfcSlabTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSlabType::setPredefinedType(IfcSlabTypeEnum::IfcSlabTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSlabTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSlabType::declaration() const { return *IfcSlabType_type; }
Type::Enum IfcSlabType::Class() { return Type::IfcSlabType; }
IfcSlabType::IfcSlabType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSlabType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSlabType::IfcSlabType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSlabTypeEnum::IfcSlabTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSlabTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSlippageConnectionCondition
bool IfcSlippageConnectionCondition::hasSlippageX() const { return !data_->getArgument(1)->isNull(); }
double IfcSlippageConnectionCondition::SlippageX() const { return *data_->getArgument(1); }
void IfcSlippageConnectionCondition::setSlippageX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcSlippageConnectionCondition::hasSlippageY() const { return !data_->getArgument(2)->isNull(); }
double IfcSlippageConnectionCondition::SlippageY() const { return *data_->getArgument(2); }
void IfcSlippageConnectionCondition::setSlippageY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcSlippageConnectionCondition::hasSlippageZ() const { return !data_->getArgument(3)->isNull(); }
double IfcSlippageConnectionCondition::SlippageZ() const { return *data_->getArgument(3); }
void IfcSlippageConnectionCondition::setSlippageZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcSlippageConnectionCondition::declaration() const { return *IfcSlippageConnectionCondition_type; }
Type::Enum IfcSlippageConnectionCondition::Class() { return Type::IfcSlippageConnectionCondition; }
IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(IfcAbstractEntity* e) : IfcStructuralConnectionCondition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSlippageConnectionCondition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(boost::optional< std::string > v1_Name, boost::optional< double > v2_SlippageX, boost::optional< double > v3_SlippageY, boost::optional< double > v4_SlippageZ) : IfcStructuralConnectionCondition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_SlippageX) { e->setArgument(1,(*v2_SlippageX)); } else { e->setArgument(1); } if (v3_SlippageY) { e->setArgument(2,(*v3_SlippageY)); } else { e->setArgument(2); } if (v4_SlippageZ) { e->setArgument(3,(*v4_SlippageZ)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSolidModel


const IfcParse::entity& IfcSolidModel::declaration() const { return *IfcSolidModel_type; }
Type::Enum IfcSolidModel::Class() { return Type::IfcSolidModel; }
IfcSolidModel::IfcSolidModel(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSolidModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSolidModel::IfcSolidModel() : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSoundProperties
bool IfcSoundProperties::IsAttenuating() const { return *data_->getArgument(4); }
void IfcSoundProperties::setIsAttenuating(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcSoundProperties::hasSoundScale() const { return !data_->getArgument(5)->isNull(); }
IfcSoundScaleEnum::IfcSoundScaleEnum IfcSoundProperties::SoundScale() const { return IfcSoundScaleEnum::FromString(*data_->getArgument(5)); }
void IfcSoundProperties::setSoundScale(IfcSoundScaleEnum::IfcSoundScaleEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcSoundScaleEnum::ToString(v)); }
IfcTemplatedEntityList< IfcSoundValue >::ptr IfcSoundProperties::SoundValues() const { IfcEntityList::ptr es = *data_->getArgument(6); return es->as<IfcSoundValue>(); }
void IfcSoundProperties::setSoundValues(IfcTemplatedEntityList< IfcSoundValue >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v->generalize()); }


const IfcParse::entity& IfcSoundProperties::declaration() const { return *IfcSoundProperties_type; }
Type::Enum IfcSoundProperties::Class() { return Type::IfcSoundProperties; }
IfcSoundProperties::IfcSoundProperties(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSoundProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSoundProperties::IfcSoundProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, bool v5_IsAttenuating, boost::optional< IfcSoundScaleEnum::IfcSoundScaleEnum > v6_SoundScale, IfcTemplatedEntityList< IfcSoundValue >::ptr v7_SoundValues) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_IsAttenuating)); if (v6_SoundScale) { e->setArgument(5,*v6_SoundScale,IfcSoundScaleEnum::ToString(*v6_SoundScale)); } else { e->setArgument(5); } e->setArgument(6,(v7_SoundValues)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSoundValue
bool IfcSoundValue::hasSoundLevelTimeSeries() const { return !data_->getArgument(4)->isNull(); }
IfcTimeSeries* IfcSoundValue::SoundLevelTimeSeries() const { return (IfcTimeSeries*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcSoundValue::setSoundLevelTimeSeries(IfcTimeSeries* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcSoundValue::Frequency() const { return *data_->getArgument(5); }
void IfcSoundValue::setFrequency(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcSoundValue::hasSoundLevelSingleValue() const { return !data_->getArgument(6)->isNull(); }
IfcDerivedMeasureValue* IfcSoundValue::SoundLevelSingleValue() const { return (IfcDerivedMeasureValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcSoundValue::setSoundLevelSingleValue(IfcDerivedMeasureValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcSoundValue::declaration() const { return *IfcSoundValue_type; }
Type::Enum IfcSoundValue::Class() { return Type::IfcSoundValue; }
IfcSoundValue::IfcSoundValue(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSoundValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSoundValue::IfcSoundValue(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTimeSeries* v5_SoundLevelTimeSeries, double v6_Frequency, IfcDerivedMeasureValue* v7_SoundLevelSingleValue) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_SoundLevelTimeSeries)); e->setArgument(5,(v6_Frequency)); e->setArgument(6,(v7_SoundLevelSingleValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpace
IfcInternalOrExternalEnum::IfcInternalOrExternalEnum IfcSpace::InteriorOrExteriorSpace() const { return IfcInternalOrExternalEnum::FromString(*data_->getArgument(9)); }
void IfcSpace::setInteriorOrExteriorSpace(IfcInternalOrExternalEnum::IfcInternalOrExternalEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcInternalOrExternalEnum::ToString(v)); }
bool IfcSpace::hasElevationWithFlooring() const { return !data_->getArgument(10)->isNull(); }
double IfcSpace::ElevationWithFlooring() const { return *data_->getArgument(10); }
void IfcSpace::setElevationWithFlooring(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }

IfcRelCoversSpaces::list::ptr IfcSpace::HasCoverings() const { return data_->getInverse(Type::IfcRelCoversSpaces, 4)->as<IfcRelCoversSpaces>(); }
IfcRelSpaceBoundary::list::ptr IfcSpace::BoundedBy() const { return data_->getInverse(Type::IfcRelSpaceBoundary, 4)->as<IfcRelSpaceBoundary>(); }

const IfcParse::entity& IfcSpace::declaration() const { return *IfcSpace_type; }
Type::Enum IfcSpace::Class() { return Type::IfcSpace; }
IfcSpace::IfcSpace(IfcAbstractEntity* e) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpace)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpace::IfcSpace(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, IfcElementCompositionEnum::IfcElementCompositionEnum v9_CompositionType, IfcInternalOrExternalEnum::IfcInternalOrExternalEnum v10_InteriorOrExteriorSpace, boost::optional< double > v11_ElevationWithFlooring) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } e->setArgument(8,v9_CompositionType,IfcElementCompositionEnum::ToString(v9_CompositionType)); e->setArgument(9,v10_InteriorOrExteriorSpace,IfcInternalOrExternalEnum::ToString(v10_InteriorOrExteriorSpace)); if (v11_ElevationWithFlooring) { e->setArgument(10,(*v11_ElevationWithFlooring)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpaceHeaterType
IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum IfcSpaceHeaterType::PredefinedType() const { return IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSpaceHeaterType::setPredefinedType(IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSpaceHeaterTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSpaceHeaterType::declaration() const { return *IfcSpaceHeaterType_type; }
Type::Enum IfcSpaceHeaterType::Class() { return Type::IfcSpaceHeaterType; }
IfcSpaceHeaterType::IfcSpaceHeaterType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpaceHeaterType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSpaceHeaterTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpaceProgram
std::string IfcSpaceProgram::SpaceProgramIdentifier() const { return *data_->getArgument(5); }
void IfcSpaceProgram::setSpaceProgramIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcSpaceProgram::hasMaxRequiredArea() const { return !data_->getArgument(6)->isNull(); }
double IfcSpaceProgram::MaxRequiredArea() const { return *data_->getArgument(6); }
void IfcSpaceProgram::setMaxRequiredArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcSpaceProgram::hasMinRequiredArea() const { return !data_->getArgument(7)->isNull(); }
double IfcSpaceProgram::MinRequiredArea() const { return *data_->getArgument(7); }
void IfcSpaceProgram::setMinRequiredArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcSpaceProgram::hasRequestedLocation() const { return !data_->getArgument(8)->isNull(); }
IfcSpatialStructureElement* IfcSpaceProgram::RequestedLocation() const { return (IfcSpatialStructureElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcSpaceProgram::setRequestedLocation(IfcSpatialStructureElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
double IfcSpaceProgram::StandardRequiredArea() const { return *data_->getArgument(9); }
void IfcSpaceProgram::setStandardRequiredArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }

IfcRelInteractionRequirements::list::ptr IfcSpaceProgram::HasInteractionReqsFrom() const { return data_->getInverse(Type::IfcRelInteractionRequirements, 7)->as<IfcRelInteractionRequirements>(); }
IfcRelInteractionRequirements::list::ptr IfcSpaceProgram::HasInteractionReqsTo() const { return data_->getInverse(Type::IfcRelInteractionRequirements, 8)->as<IfcRelInteractionRequirements>(); }

const IfcParse::entity& IfcSpaceProgram::declaration() const { return *IfcSpaceProgram_type; }
Type::Enum IfcSpaceProgram::Class() { return Type::IfcSpaceProgram; }
IfcSpaceProgram::IfcSpaceProgram(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpaceProgram)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpaceProgram::IfcSpaceProgram(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, std::string v6_SpaceProgramIdentifier, boost::optional< double > v7_MaxRequiredArea, boost::optional< double > v8_MinRequiredArea, IfcSpatialStructureElement* v9_RequestedLocation, double v10_StandardRequiredArea) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_SpaceProgramIdentifier)); if (v7_MaxRequiredArea) { e->setArgument(6,(*v7_MaxRequiredArea)); } else { e->setArgument(6); } if (v8_MinRequiredArea) { e->setArgument(7,(*v8_MinRequiredArea)); } else { e->setArgument(7); } e->setArgument(8,(v9_RequestedLocation)); e->setArgument(9,(v10_StandardRequiredArea)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpaceThermalLoadProperties
bool IfcSpaceThermalLoadProperties::hasApplicableValueRatio() const { return !data_->getArgument(4)->isNull(); }
double IfcSpaceThermalLoadProperties::ApplicableValueRatio() const { return *data_->getArgument(4); }
void IfcSpaceThermalLoadProperties::setApplicableValueRatio(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcThermalLoadSourceEnum::IfcThermalLoadSourceEnum IfcSpaceThermalLoadProperties::ThermalLoadSource() const { return IfcThermalLoadSourceEnum::FromString(*data_->getArgument(5)); }
void IfcSpaceThermalLoadProperties::setThermalLoadSource(IfcThermalLoadSourceEnum::IfcThermalLoadSourceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcThermalLoadSourceEnum::ToString(v)); }
IfcPropertySourceEnum::IfcPropertySourceEnum IfcSpaceThermalLoadProperties::PropertySource() const { return IfcPropertySourceEnum::FromString(*data_->getArgument(6)); }
void IfcSpaceThermalLoadProperties::setPropertySource(IfcPropertySourceEnum::IfcPropertySourceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcPropertySourceEnum::ToString(v)); }
bool IfcSpaceThermalLoadProperties::hasSourceDescription() const { return !data_->getArgument(7)->isNull(); }
std::string IfcSpaceThermalLoadProperties::SourceDescription() const { return *data_->getArgument(7); }
void IfcSpaceThermalLoadProperties::setSourceDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
double IfcSpaceThermalLoadProperties::MaximumValue() const { return *data_->getArgument(8); }
void IfcSpaceThermalLoadProperties::setMaximumValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcSpaceThermalLoadProperties::hasMinimumValue() const { return !data_->getArgument(9)->isNull(); }
double IfcSpaceThermalLoadProperties::MinimumValue() const { return *data_->getArgument(9); }
void IfcSpaceThermalLoadProperties::setMinimumValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcSpaceThermalLoadProperties::hasThermalLoadTimeSeriesValues() const { return !data_->getArgument(10)->isNull(); }
IfcTimeSeries* IfcSpaceThermalLoadProperties::ThermalLoadTimeSeriesValues() const { return (IfcTimeSeries*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcSpaceThermalLoadProperties::setThermalLoadTimeSeriesValues(IfcTimeSeries* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcSpaceThermalLoadProperties::hasUserDefinedThermalLoadSource() const { return !data_->getArgument(11)->isNull(); }
std::string IfcSpaceThermalLoadProperties::UserDefinedThermalLoadSource() const { return *data_->getArgument(11); }
void IfcSpaceThermalLoadProperties::setUserDefinedThermalLoadSource(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcSpaceThermalLoadProperties::hasUserDefinedPropertySource() const { return !data_->getArgument(12)->isNull(); }
std::string IfcSpaceThermalLoadProperties::UserDefinedPropertySource() const { return *data_->getArgument(12); }
void IfcSpaceThermalLoadProperties::setUserDefinedPropertySource(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
IfcThermalLoadTypeEnum::IfcThermalLoadTypeEnum IfcSpaceThermalLoadProperties::ThermalLoadType() const { return IfcThermalLoadTypeEnum::FromString(*data_->getArgument(13)); }
void IfcSpaceThermalLoadProperties::setThermalLoadType(IfcThermalLoadTypeEnum::IfcThermalLoadTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v,IfcThermalLoadTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSpaceThermalLoadProperties::declaration() const { return *IfcSpaceThermalLoadProperties_type; }
Type::Enum IfcSpaceThermalLoadProperties::Class() { return Type::IfcSpaceThermalLoadProperties; }
IfcSpaceThermalLoadProperties::IfcSpaceThermalLoadProperties(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpaceThermalLoadProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpaceThermalLoadProperties::IfcSpaceThermalLoadProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_ApplicableValueRatio, IfcThermalLoadSourceEnum::IfcThermalLoadSourceEnum v6_ThermalLoadSource, IfcPropertySourceEnum::IfcPropertySourceEnum v7_PropertySource, boost::optional< std::string > v8_SourceDescription, double v9_MaximumValue, boost::optional< double > v10_MinimumValue, IfcTimeSeries* v11_ThermalLoadTimeSeriesValues, boost::optional< std::string > v12_UserDefinedThermalLoadSource, boost::optional< std::string > v13_UserDefinedPropertySource, IfcThermalLoadTypeEnum::IfcThermalLoadTypeEnum v14_ThermalLoadType) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableValueRatio) { e->setArgument(4,(*v5_ApplicableValueRatio)); } else { e->setArgument(4); } e->setArgument(5,v6_ThermalLoadSource,IfcThermalLoadSourceEnum::ToString(v6_ThermalLoadSource)); e->setArgument(6,v7_PropertySource,IfcPropertySourceEnum::ToString(v7_PropertySource)); if (v8_SourceDescription) { e->setArgument(7,(*v8_SourceDescription)); } else { e->setArgument(7); } e->setArgument(8,(v9_MaximumValue)); if (v10_MinimumValue) { e->setArgument(9,(*v10_MinimumValue)); } else { e->setArgument(9); } e->setArgument(10,(v11_ThermalLoadTimeSeriesValues)); if (v12_UserDefinedThermalLoadSource) { e->setArgument(11,(*v12_UserDefinedThermalLoadSource)); } else { e->setArgument(11); } if (v13_UserDefinedPropertySource) { e->setArgument(12,(*v13_UserDefinedPropertySource)); } else { e->setArgument(12); } e->setArgument(13,v14_ThermalLoadType,IfcThermalLoadTypeEnum::ToString(v14_ThermalLoadType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpaceType
IfcSpaceTypeEnum::IfcSpaceTypeEnum IfcSpaceType::PredefinedType() const { return IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSpaceType::setPredefinedType(IfcSpaceTypeEnum::IfcSpaceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSpaceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSpaceType::declaration() const { return *IfcSpaceType_type; }
Type::Enum IfcSpaceType::Class() { return Type::IfcSpaceType; }
IfcSpaceType::IfcSpaceType(IfcAbstractEntity* e) : IfcSpatialStructureElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpaceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSpaceTypeEnum::IfcSpaceTypeEnum v10_PredefinedType) : IfcSpatialStructureElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSpaceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpatialStructureElement
bool IfcSpatialStructureElement::hasLongName() const { return !data_->getArgument(7)->isNull(); }
std::string IfcSpatialStructureElement::LongName() const { return *data_->getArgument(7); }
void IfcSpatialStructureElement::setLongName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcElementCompositionEnum::IfcElementCompositionEnum IfcSpatialStructureElement::CompositionType() const { return IfcElementCompositionEnum::FromString(*data_->getArgument(8)); }
void IfcSpatialStructureElement::setCompositionType(IfcElementCompositionEnum::IfcElementCompositionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcElementCompositionEnum::ToString(v)); }

IfcRelReferencedInSpatialStructure::list::ptr IfcSpatialStructureElement::ReferencesElements() const { return data_->getInverse(Type::IfcRelReferencedInSpatialStructure, 5)->as<IfcRelReferencedInSpatialStructure>(); }
IfcRelServicesBuildings::list::ptr IfcSpatialStructureElement::ServicedBySystems() const { return data_->getInverse(Type::IfcRelServicesBuildings, 5)->as<IfcRelServicesBuildings>(); }
IfcRelContainedInSpatialStructure::list::ptr IfcSpatialStructureElement::ContainsElements() const { return data_->getInverse(Type::IfcRelContainedInSpatialStructure, 5)->as<IfcRelContainedInSpatialStructure>(); }

const IfcParse::entity& IfcSpatialStructureElement::declaration() const { return *IfcSpatialStructureElement_type; }
Type::Enum IfcSpatialStructureElement::Class() { return Type::IfcSpatialStructureElement; }
IfcSpatialStructureElement::IfcSpatialStructureElement(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpatialStructureElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpatialStructureElement::IfcSpatialStructureElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, IfcElementCompositionEnum::IfcElementCompositionEnum v9_CompositionType) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } e->setArgument(8,v9_CompositionType,IfcElementCompositionEnum::ToString(v9_CompositionType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpatialStructureElementType


const IfcParse::entity& IfcSpatialStructureElementType::declaration() const { return *IfcSpatialStructureElementType_type; }
Type::Enum IfcSpatialStructureElementType::Class() { return Type::IfcSpatialStructureElementType; }
IfcSpatialStructureElementType::IfcSpatialStructureElementType(IfcAbstractEntity* e) : IfcElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpatialStructureElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpatialStructureElementType::IfcSpatialStructureElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSphere
double IfcSphere::Radius() const { return *data_->getArgument(1); }
void IfcSphere::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcSphere::declaration() const { return *IfcSphere_type; }
Type::Enum IfcSphere::Class() { return Type::IfcSphere; }
IfcSphere::IfcSphere(IfcAbstractEntity* e) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSphere)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSphere::IfcSphere(IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_Radius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStackTerminalType
IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum IfcStackTerminalType::PredefinedType() const { return IfcStackTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void IfcStackTerminalType::setPredefinedType(IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcStackTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStackTerminalType::declaration() const { return *IfcStackTerminalType_type; }
Type::Enum IfcStackTerminalType::Class() { return Type::IfcStackTerminalType; }
IfcStackTerminalType::IfcStackTerminalType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStackTerminalType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcStackTerminalTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStair
IfcStairTypeEnum::IfcStairTypeEnum IfcStair::ShapeType() const { return IfcStairTypeEnum::FromString(*data_->getArgument(8)); }
void IfcStair::setShapeType(IfcStairTypeEnum::IfcStairTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcStairTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStair::declaration() const { return *IfcStair_type; }
Type::Enum IfcStair::Class() { return Type::IfcStair; }
IfcStair::IfcStair(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStair)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStair::IfcStair(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, IfcStairTypeEnum::IfcStairTypeEnum v9_ShapeType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } e->setArgument(8,v9_ShapeType,IfcStairTypeEnum::ToString(v9_ShapeType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStairFlight
bool IfcStairFlight::hasNumberOfRiser() const { return !data_->getArgument(8)->isNull(); }
int IfcStairFlight::NumberOfRiser() const { return *data_->getArgument(8); }
void IfcStairFlight::setNumberOfRiser(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcStairFlight::hasNumberOfTreads() const { return !data_->getArgument(9)->isNull(); }
int IfcStairFlight::NumberOfTreads() const { return *data_->getArgument(9); }
void IfcStairFlight::setNumberOfTreads(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcStairFlight::hasRiserHeight() const { return !data_->getArgument(10)->isNull(); }
double IfcStairFlight::RiserHeight() const { return *data_->getArgument(10); }
void IfcStairFlight::setRiserHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcStairFlight::hasTreadLength() const { return !data_->getArgument(11)->isNull(); }
double IfcStairFlight::TreadLength() const { return *data_->getArgument(11); }
void IfcStairFlight::setTreadLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


const IfcParse::entity& IfcStairFlight::declaration() const { return *IfcStairFlight_type; }
Type::Enum IfcStairFlight::Class() { return Type::IfcStairFlight; }
IfcStairFlight::IfcStairFlight(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStairFlight)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStairFlight::IfcStairFlight(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< int > v9_NumberOfRiser, boost::optional< int > v10_NumberOfTreads, boost::optional< double > v11_RiserHeight, boost::optional< double > v12_TreadLength) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_NumberOfRiser) { e->setArgument(8,(*v9_NumberOfRiser)); } else { e->setArgument(8); } if (v10_NumberOfTreads) { e->setArgument(9,(*v10_NumberOfTreads)); } else { e->setArgument(9); } if (v11_RiserHeight) { e->setArgument(10,(*v11_RiserHeight)); } else { e->setArgument(10); } if (v12_TreadLength) { e->setArgument(11,(*v12_TreadLength)); } else { e->setArgument(11); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStairFlightType
IfcStairFlightTypeEnum::IfcStairFlightTypeEnum IfcStairFlightType::PredefinedType() const { return IfcStairFlightTypeEnum::FromString(*data_->getArgument(9)); }
void IfcStairFlightType::setPredefinedType(IfcStairFlightTypeEnum::IfcStairFlightTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcStairFlightTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStairFlightType::declaration() const { return *IfcStairFlightType_type; }
Type::Enum IfcStairFlightType::Class() { return Type::IfcStairFlightType; }
IfcStairFlightType::IfcStairFlightType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStairFlightType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStairFlightType::IfcStairFlightType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcStairFlightTypeEnum::IfcStairFlightTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcStairFlightTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralAction
bool IfcStructuralAction::DestabilizingLoad() const { return *data_->getArgument(9); }
void IfcStructuralAction::setDestabilizingLoad(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcStructuralAction::hasCausedBy() const { return !data_->getArgument(10)->isNull(); }
IfcStructuralReaction* IfcStructuralAction::CausedBy() const { return (IfcStructuralReaction*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcStructuralAction::setCausedBy(IfcStructuralReaction* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcStructuralAction::declaration() const { return *IfcStructuralAction_type; }
Type::Enum IfcStructuralAction::Class() { return Type::IfcStructuralAction; }
IfcStructuralAction::IfcStructuralAction(IfcAbstractEntity* e) : IfcStructuralActivity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralAction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralAction::IfcStructuralAction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, bool v10_DestabilizingLoad, IfcStructuralReaction* v11_CausedBy) : IfcStructuralActivity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); e->setArgument(9,(v10_DestabilizingLoad)); e->setArgument(10,(v11_CausedBy)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralActivity
IfcStructuralLoad* IfcStructuralActivity::AppliedLoad() const { return (IfcStructuralLoad*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcStructuralActivity::setAppliedLoad(IfcStructuralLoad* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum IfcStructuralActivity::GlobalOrLocal() const { return IfcGlobalOrLocalEnum::FromString(*data_->getArgument(8)); }
void IfcStructuralActivity::setGlobalOrLocal(IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcGlobalOrLocalEnum::ToString(v)); }

IfcRelConnectsStructuralActivity::list::ptr IfcStructuralActivity::AssignedToStructuralItem() const { return data_->getInverse(Type::IfcRelConnectsStructuralActivity, 5)->as<IfcRelConnectsStructuralActivity>(); }

const IfcParse::entity& IfcStructuralActivity::declaration() const { return *IfcStructuralActivity_type; }
Type::Enum IfcStructuralActivity::Class() { return Type::IfcStructuralActivity; }
IfcStructuralActivity::IfcStructuralActivity(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralActivity)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralActivity::IfcStructuralActivity(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralAnalysisModel
IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum IfcStructuralAnalysisModel::PredefinedType() const { return IfcAnalysisModelTypeEnum::FromString(*data_->getArgument(5)); }
void IfcStructuralAnalysisModel::setPredefinedType(IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcAnalysisModelTypeEnum::ToString(v)); }
bool IfcStructuralAnalysisModel::hasOrientationOf2DPlane() const { return !data_->getArgument(6)->isNull(); }
IfcAxis2Placement3D* IfcStructuralAnalysisModel::OrientationOf2DPlane() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcStructuralAnalysisModel::setOrientationOf2DPlane(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcStructuralAnalysisModel::hasLoadedBy() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcStructuralLoadGroup >::ptr IfcStructuralAnalysisModel::LoadedBy() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcStructuralLoadGroup>(); }
void IfcStructuralAnalysisModel::setLoadedBy(IfcTemplatedEntityList< IfcStructuralLoadGroup >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
bool IfcStructuralAnalysisModel::hasHasResults() const { return !data_->getArgument(8)->isNull(); }
IfcTemplatedEntityList< IfcStructuralResultGroup >::ptr IfcStructuralAnalysisModel::HasResults() const { IfcEntityList::ptr es = *data_->getArgument(8); return es->as<IfcStructuralResultGroup>(); }
void IfcStructuralAnalysisModel::setHasResults(IfcTemplatedEntityList< IfcStructuralResultGroup >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v->generalize()); }


const IfcParse::entity& IfcStructuralAnalysisModel::declaration() const { return *IfcStructuralAnalysisModel_type; }
Type::Enum IfcStructuralAnalysisModel::Class() { return Type::IfcStructuralAnalysisModel; }
IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(IfcAbstractEntity* e) : IfcSystem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralAnalysisModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum v6_PredefinedType, IfcAxis2Placement3D* v7_OrientationOf2DPlane, boost::optional< IfcTemplatedEntityList< IfcStructuralLoadGroup >::ptr > v8_LoadedBy, boost::optional< IfcTemplatedEntityList< IfcStructuralResultGroup >::ptr > v9_HasResults) : IfcSystem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,v6_PredefinedType,IfcAnalysisModelTypeEnum::ToString(v6_PredefinedType)); e->setArgument(6,(v7_OrientationOf2DPlane)); if (v8_LoadedBy) { e->setArgument(7,(*v8_LoadedBy)->generalize()); } else { e->setArgument(7); } if (v9_HasResults) { e->setArgument(8,(*v9_HasResults)->generalize()); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralConnection
bool IfcStructuralConnection::hasAppliedCondition() const { return !data_->getArgument(7)->isNull(); }
IfcBoundaryCondition* IfcStructuralConnection::AppliedCondition() const { return (IfcBoundaryCondition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcStructuralConnection::setAppliedCondition(IfcBoundaryCondition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }

IfcRelConnectsStructuralMember::list::ptr IfcStructuralConnection::ConnectsStructuralMembers() const { return data_->getInverse(Type::IfcRelConnectsStructuralMember, 5)->as<IfcRelConnectsStructuralMember>(); }

const IfcParse::entity& IfcStructuralConnection::declaration() const { return *IfcStructuralConnection_type; }
Type::Enum IfcStructuralConnection::Class() { return Type::IfcStructuralConnection; }
IfcStructuralConnection::IfcStructuralConnection(IfcAbstractEntity* e) : IfcStructuralItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralConnection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralConnection::IfcStructuralConnection(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedCondition)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralConnectionCondition
bool IfcStructuralConnectionCondition::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcStructuralConnectionCondition::Name() const { return *data_->getArgument(0); }
void IfcStructuralConnectionCondition::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcStructuralConnectionCondition::declaration() const { return *IfcStructuralConnectionCondition_type; }
Type::Enum IfcStructuralConnectionCondition::Class() { return Type::IfcStructuralConnectionCondition; }
IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcStructuralConnectionCondition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralCurveConnection


const IfcParse::entity& IfcStructuralCurveConnection::declaration() const { return *IfcStructuralCurveConnection_type; }
Type::Enum IfcStructuralCurveConnection::Class() { return Type::IfcStructuralCurveConnection; }
IfcStructuralCurveConnection::IfcStructuralCurveConnection(IfcAbstractEntity* e) : IfcStructuralConnection((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralCurveConnection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralCurveConnection::IfcStructuralCurveConnection(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralConnection((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedCondition)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralCurveMember
IfcStructuralCurveTypeEnum::IfcStructuralCurveTypeEnum IfcStructuralCurveMember::PredefinedType() const { return IfcStructuralCurveTypeEnum::FromString(*data_->getArgument(7)); }
void IfcStructuralCurveMember::setPredefinedType(IfcStructuralCurveTypeEnum::IfcStructuralCurveTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcStructuralCurveTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStructuralCurveMember::declaration() const { return *IfcStructuralCurveMember_type; }
Type::Enum IfcStructuralCurveMember::Class() { return Type::IfcStructuralCurveMember; }
IfcStructuralCurveMember::IfcStructuralCurveMember(IfcAbstractEntity* e) : IfcStructuralMember((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralCurveMember)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralCurveMember::IfcStructuralCurveMember(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralCurveTypeEnum::IfcStructuralCurveTypeEnum v8_PredefinedType) : IfcStructuralMember((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,v8_PredefinedType,IfcStructuralCurveTypeEnum::ToString(v8_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralCurveMemberVarying


const IfcParse::entity& IfcStructuralCurveMemberVarying::declaration() const { return *IfcStructuralCurveMemberVarying_type; }
Type::Enum IfcStructuralCurveMemberVarying::Class() { return Type::IfcStructuralCurveMemberVarying; }
IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(IfcAbstractEntity* e) : IfcStructuralCurveMember((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralCurveMemberVarying)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralCurveTypeEnum::IfcStructuralCurveTypeEnum v8_PredefinedType) : IfcStructuralCurveMember((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,v8_PredefinedType,IfcStructuralCurveTypeEnum::ToString(v8_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralItem

IfcRelConnectsStructuralActivity::list::ptr IfcStructuralItem::AssignedStructuralActivity() const { return data_->getInverse(Type::IfcRelConnectsStructuralActivity, 4)->as<IfcRelConnectsStructuralActivity>(); }

const IfcParse::entity& IfcStructuralItem::declaration() const { return *IfcStructuralItem_type; }
Type::Enum IfcStructuralItem::Class() { return Type::IfcStructuralItem; }
IfcStructuralItem::IfcStructuralItem(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralItem::IfcStructuralItem(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLinearAction
IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum IfcStructuralLinearAction::ProjectedOrTrue() const { return IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(11)); }
void IfcStructuralLinearAction::setProjectedOrTrue(IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcProjectedOrTrueLengthEnum::ToString(v)); }


const IfcParse::entity& IfcStructuralLinearAction::declaration() const { return *IfcStructuralLinearAction_type; }
Type::Enum IfcStructuralLinearAction::Class() { return Type::IfcStructuralLinearAction; }
IfcStructuralLinearAction::IfcStructuralLinearAction(IfcAbstractEntity* e) : IfcStructuralAction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLinearAction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, bool v10_DestabilizingLoad, IfcStructuralReaction* v11_CausedBy, IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum v12_ProjectedOrTrue) : IfcStructuralAction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); e->setArgument(9,(v10_DestabilizingLoad)); e->setArgument(10,(v11_CausedBy)); e->setArgument(11,v12_ProjectedOrTrue,IfcProjectedOrTrueLengthEnum::ToString(v12_ProjectedOrTrue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLinearActionVarying
IfcShapeAspect* IfcStructuralLinearActionVarying::VaryingAppliedLoadLocation() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(12))); }
void IfcStructuralLinearActionVarying::setVaryingAppliedLoadLocation(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
IfcTemplatedEntityList< IfcStructuralLoad >::ptr IfcStructuralLinearActionVarying::SubsequentAppliedLoads() const { IfcEntityList::ptr es = *data_->getArgument(13); return es->as<IfcStructuralLoad>(); }
void IfcStructuralLinearActionVarying::setSubsequentAppliedLoads(IfcTemplatedEntityList< IfcStructuralLoad >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v->generalize()); }


const IfcParse::entity& IfcStructuralLinearActionVarying::declaration() const { return *IfcStructuralLinearActionVarying_type; }
Type::Enum IfcStructuralLinearActionVarying::Class() { return Type::IfcStructuralLinearActionVarying; }
IfcStructuralLinearActionVarying::IfcStructuralLinearActionVarying(IfcAbstractEntity* e) : IfcStructuralLinearAction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLinearActionVarying)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLinearActionVarying::IfcStructuralLinearActionVarying(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, bool v10_DestabilizingLoad, IfcStructuralReaction* v11_CausedBy, IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum v12_ProjectedOrTrue, IfcShapeAspect* v13_VaryingAppliedLoadLocation, IfcTemplatedEntityList< IfcStructuralLoad >::ptr v14_SubsequentAppliedLoads) : IfcStructuralLinearAction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); e->setArgument(9,(v10_DestabilizingLoad)); e->setArgument(10,(v11_CausedBy)); e->setArgument(11,v12_ProjectedOrTrue,IfcProjectedOrTrueLengthEnum::ToString(v12_ProjectedOrTrue)); e->setArgument(12,(v13_VaryingAppliedLoadLocation)); e->setArgument(13,(v14_SubsequentAppliedLoads)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoad
bool IfcStructuralLoad::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcStructuralLoad::Name() const { return *data_->getArgument(0); }
void IfcStructuralLoad::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcStructuralLoad::declaration() const { return *IfcStructuralLoad_type; }
Type::Enum IfcStructuralLoad::Class() { return Type::IfcStructuralLoad; }
IfcStructuralLoad::IfcStructuralLoad(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcStructuralLoad)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadGroup
IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum IfcStructuralLoadGroup::PredefinedType() const { return IfcLoadGroupTypeEnum::FromString(*data_->getArgument(5)); }
void IfcStructuralLoadGroup::setPredefinedType(IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcLoadGroupTypeEnum::ToString(v)); }
IfcActionTypeEnum::IfcActionTypeEnum IfcStructuralLoadGroup::ActionType() const { return IfcActionTypeEnum::FromString(*data_->getArgument(6)); }
void IfcStructuralLoadGroup::setActionType(IfcActionTypeEnum::IfcActionTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcActionTypeEnum::ToString(v)); }
IfcActionSourceTypeEnum::IfcActionSourceTypeEnum IfcStructuralLoadGroup::ActionSource() const { return IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); }
void IfcStructuralLoadGroup::setActionSource(IfcActionSourceTypeEnum::IfcActionSourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcActionSourceTypeEnum::ToString(v)); }
bool IfcStructuralLoadGroup::hasCoefficient() const { return !data_->getArgument(8)->isNull(); }
double IfcStructuralLoadGroup::Coefficient() const { return *data_->getArgument(8); }
void IfcStructuralLoadGroup::setCoefficient(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcStructuralLoadGroup::hasPurpose() const { return !data_->getArgument(9)->isNull(); }
std::string IfcStructuralLoadGroup::Purpose() const { return *data_->getArgument(9); }
void IfcStructuralLoadGroup::setPurpose(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }

IfcStructuralResultGroup::list::ptr IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(Type::IfcStructuralResultGroup, 6)->as<IfcStructuralResultGroup>(); }
IfcStructuralAnalysisModel::list::ptr IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(Type::IfcStructuralAnalysisModel, 7)->as<IfcStructuralAnalysisModel>(); }

const IfcParse::entity& IfcStructuralLoadGroup::declaration() const { return *IfcStructuralLoadGroup_type; }
Type::Enum IfcStructuralLoadGroup::Class() { return Type::IfcStructuralLoadGroup; }
IfcStructuralLoadGroup::IfcStructuralLoadGroup(IfcAbstractEntity* e) : IfcGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadGroup)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum v6_PredefinedType, IfcActionTypeEnum::IfcActionTypeEnum v7_ActionType, IfcActionSourceTypeEnum::IfcActionSourceTypeEnum v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose) : IfcGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,v6_PredefinedType,IfcLoadGroupTypeEnum::ToString(v6_PredefinedType)); e->setArgument(6,v7_ActionType,IfcActionTypeEnum::ToString(v7_ActionType)); e->setArgument(7,v8_ActionSource,IfcActionSourceTypeEnum::ToString(v8_ActionSource)); if (v9_Coefficient) { e->setArgument(8,(*v9_Coefficient)); } else { e->setArgument(8); } if (v10_Purpose) { e->setArgument(9,(*v10_Purpose)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadLinearForce
bool IfcStructuralLoadLinearForce::hasLinearForceX() const { return !data_->getArgument(1)->isNull(); }
double IfcStructuralLoadLinearForce::LinearForceX() const { return *data_->getArgument(1); }
void IfcStructuralLoadLinearForce::setLinearForceX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcStructuralLoadLinearForce::hasLinearForceY() const { return !data_->getArgument(2)->isNull(); }
double IfcStructuralLoadLinearForce::LinearForceY() const { return *data_->getArgument(2); }
void IfcStructuralLoadLinearForce::setLinearForceY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcStructuralLoadLinearForce::hasLinearForceZ() const { return !data_->getArgument(3)->isNull(); }
double IfcStructuralLoadLinearForce::LinearForceZ() const { return *data_->getArgument(3); }
void IfcStructuralLoadLinearForce::setLinearForceZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcStructuralLoadLinearForce::hasLinearMomentX() const { return !data_->getArgument(4)->isNull(); }
double IfcStructuralLoadLinearForce::LinearMomentX() const { return *data_->getArgument(4); }
void IfcStructuralLoadLinearForce::setLinearMomentX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcStructuralLoadLinearForce::hasLinearMomentY() const { return !data_->getArgument(5)->isNull(); }
double IfcStructuralLoadLinearForce::LinearMomentY() const { return *data_->getArgument(5); }
void IfcStructuralLoadLinearForce::setLinearMomentY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcStructuralLoadLinearForce::hasLinearMomentZ() const { return !data_->getArgument(6)->isNull(); }
double IfcStructuralLoadLinearForce::LinearMomentZ() const { return *data_->getArgument(6); }
void IfcStructuralLoadLinearForce::setLinearMomentZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcStructuralLoadLinearForce::declaration() const { return *IfcStructuralLoadLinearForce_type; }
Type::Enum IfcStructuralLoadLinearForce::Class() { return Type::IfcStructuralLoadLinearForce; }
IfcStructuralLoadLinearForce::IfcStructuralLoadLinearForce(IfcAbstractEntity* e) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadLinearForce)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadLinearForce::IfcStructuralLoadLinearForce(boost::optional< std::string > v1_Name, boost::optional< double > v2_LinearForceX, boost::optional< double > v3_LinearForceY, boost::optional< double > v4_LinearForceZ, boost::optional< double > v5_LinearMomentX, boost::optional< double > v6_LinearMomentY, boost::optional< double > v7_LinearMomentZ) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_LinearForceX) { e->setArgument(1,(*v2_LinearForceX)); } else { e->setArgument(1); } if (v3_LinearForceY) { e->setArgument(2,(*v3_LinearForceY)); } else { e->setArgument(2); } if (v4_LinearForceZ) { e->setArgument(3,(*v4_LinearForceZ)); } else { e->setArgument(3); } if (v5_LinearMomentX) { e->setArgument(4,(*v5_LinearMomentX)); } else { e->setArgument(4); } if (v6_LinearMomentY) { e->setArgument(5,(*v6_LinearMomentY)); } else { e->setArgument(5); } if (v7_LinearMomentZ) { e->setArgument(6,(*v7_LinearMomentZ)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadPlanarForce
bool IfcStructuralLoadPlanarForce::hasPlanarForceX() const { return !data_->getArgument(1)->isNull(); }
double IfcStructuralLoadPlanarForce::PlanarForceX() const { return *data_->getArgument(1); }
void IfcStructuralLoadPlanarForce::setPlanarForceX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcStructuralLoadPlanarForce::hasPlanarForceY() const { return !data_->getArgument(2)->isNull(); }
double IfcStructuralLoadPlanarForce::PlanarForceY() const { return *data_->getArgument(2); }
void IfcStructuralLoadPlanarForce::setPlanarForceY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcStructuralLoadPlanarForce::hasPlanarForceZ() const { return !data_->getArgument(3)->isNull(); }
double IfcStructuralLoadPlanarForce::PlanarForceZ() const { return *data_->getArgument(3); }
void IfcStructuralLoadPlanarForce::setPlanarForceZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcStructuralLoadPlanarForce::declaration() const { return *IfcStructuralLoadPlanarForce_type; }
Type::Enum IfcStructuralLoadPlanarForce::Class() { return Type::IfcStructuralLoadPlanarForce; }
IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(IfcAbstractEntity* e) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadPlanarForce)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::optional< std::string > v1_Name, boost::optional< double > v2_PlanarForceX, boost::optional< double > v3_PlanarForceY, boost::optional< double > v4_PlanarForceZ) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_PlanarForceX) { e->setArgument(1,(*v2_PlanarForceX)); } else { e->setArgument(1); } if (v3_PlanarForceY) { e->setArgument(2,(*v3_PlanarForceY)); } else { e->setArgument(2); } if (v4_PlanarForceZ) { e->setArgument(3,(*v4_PlanarForceZ)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadSingleDisplacement
bool IfcStructuralLoadSingleDisplacement::hasDisplacementX() const { return !data_->getArgument(1)->isNull(); }
double IfcStructuralLoadSingleDisplacement::DisplacementX() const { return *data_->getArgument(1); }
void IfcStructuralLoadSingleDisplacement::setDisplacementX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcStructuralLoadSingleDisplacement::hasDisplacementY() const { return !data_->getArgument(2)->isNull(); }
double IfcStructuralLoadSingleDisplacement::DisplacementY() const { return *data_->getArgument(2); }
void IfcStructuralLoadSingleDisplacement::setDisplacementY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcStructuralLoadSingleDisplacement::hasDisplacementZ() const { return !data_->getArgument(3)->isNull(); }
double IfcStructuralLoadSingleDisplacement::DisplacementZ() const { return *data_->getArgument(3); }
void IfcStructuralLoadSingleDisplacement::setDisplacementZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcStructuralLoadSingleDisplacement::hasRotationalDisplacementRX() const { return !data_->getArgument(4)->isNull(); }
double IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { return *data_->getArgument(4); }
void IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcStructuralLoadSingleDisplacement::hasRotationalDisplacementRY() const { return !data_->getArgument(5)->isNull(); }
double IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { return *data_->getArgument(5); }
void IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcStructuralLoadSingleDisplacement::hasRotationalDisplacementRZ() const { return !data_->getArgument(6)->isNull(); }
double IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { return *data_->getArgument(6); }
void IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcStructuralLoadSingleDisplacement::declaration() const { return *IfcStructuralLoadSingleDisplacement_type; }
Type::Enum IfcStructuralLoadSingleDisplacement::Class() { return Type::IfcStructuralLoadSingleDisplacement; }
IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement(IfcAbstractEntity* e) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadSingleDisplacement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement(boost::optional< std::string > v1_Name, boost::optional< double > v2_DisplacementX, boost::optional< double > v3_DisplacementY, boost::optional< double > v4_DisplacementZ, boost::optional< double > v5_RotationalDisplacementRX, boost::optional< double > v6_RotationalDisplacementRY, boost::optional< double > v7_RotationalDisplacementRZ) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DisplacementX) { e->setArgument(1,(*v2_DisplacementX)); } else { e->setArgument(1); } if (v3_DisplacementY) { e->setArgument(2,(*v3_DisplacementY)); } else { e->setArgument(2); } if (v4_DisplacementZ) { e->setArgument(3,(*v4_DisplacementZ)); } else { e->setArgument(3); } if (v5_RotationalDisplacementRX) { e->setArgument(4,(*v5_RotationalDisplacementRX)); } else { e->setArgument(4); } if (v6_RotationalDisplacementRY) { e->setArgument(5,(*v6_RotationalDisplacementRY)); } else { e->setArgument(5); } if (v7_RotationalDisplacementRZ) { e->setArgument(6,(*v7_RotationalDisplacementRZ)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadSingleDisplacementDistortion
bool IfcStructuralLoadSingleDisplacementDistortion::hasDistortion() const { return !data_->getArgument(7)->isNull(); }
double IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { return *data_->getArgument(7); }
void IfcStructuralLoadSingleDisplacementDistortion::setDistortion(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IfcStructuralLoadSingleDisplacementDistortion_type; }
Type::Enum IfcStructuralLoadSingleDisplacementDistortion::Class() { return Type::IfcStructuralLoadSingleDisplacementDistortion; }
IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDisplacementDistortion(IfcAbstractEntity* e) : IfcStructuralLoadSingleDisplacement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadSingleDisplacementDistortion)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDisplacementDistortion(boost::optional< std::string > v1_Name, boost::optional< double > v2_DisplacementX, boost::optional< double > v3_DisplacementY, boost::optional< double > v4_DisplacementZ, boost::optional< double > v5_RotationalDisplacementRX, boost::optional< double > v6_RotationalDisplacementRY, boost::optional< double > v7_RotationalDisplacementRZ, boost::optional< double > v8_Distortion) : IfcStructuralLoadSingleDisplacement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DisplacementX) { e->setArgument(1,(*v2_DisplacementX)); } else { e->setArgument(1); } if (v3_DisplacementY) { e->setArgument(2,(*v3_DisplacementY)); } else { e->setArgument(2); } if (v4_DisplacementZ) { e->setArgument(3,(*v4_DisplacementZ)); } else { e->setArgument(3); } if (v5_RotationalDisplacementRX) { e->setArgument(4,(*v5_RotationalDisplacementRX)); } else { e->setArgument(4); } if (v6_RotationalDisplacementRY) { e->setArgument(5,(*v6_RotationalDisplacementRY)); } else { e->setArgument(5); } if (v7_RotationalDisplacementRZ) { e->setArgument(6,(*v7_RotationalDisplacementRZ)); } else { e->setArgument(6); } if (v8_Distortion) { e->setArgument(7,(*v8_Distortion)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadSingleForce
bool IfcStructuralLoadSingleForce::hasForceX() const { return !data_->getArgument(1)->isNull(); }
double IfcStructuralLoadSingleForce::ForceX() const { return *data_->getArgument(1); }
void IfcStructuralLoadSingleForce::setForceX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcStructuralLoadSingleForce::hasForceY() const { return !data_->getArgument(2)->isNull(); }
double IfcStructuralLoadSingleForce::ForceY() const { return *data_->getArgument(2); }
void IfcStructuralLoadSingleForce::setForceY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcStructuralLoadSingleForce::hasForceZ() const { return !data_->getArgument(3)->isNull(); }
double IfcStructuralLoadSingleForce::ForceZ() const { return *data_->getArgument(3); }
void IfcStructuralLoadSingleForce::setForceZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcStructuralLoadSingleForce::hasMomentX() const { return !data_->getArgument(4)->isNull(); }
double IfcStructuralLoadSingleForce::MomentX() const { return *data_->getArgument(4); }
void IfcStructuralLoadSingleForce::setMomentX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcStructuralLoadSingleForce::hasMomentY() const { return !data_->getArgument(5)->isNull(); }
double IfcStructuralLoadSingleForce::MomentY() const { return *data_->getArgument(5); }
void IfcStructuralLoadSingleForce::setMomentY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcStructuralLoadSingleForce::hasMomentZ() const { return !data_->getArgument(6)->isNull(); }
double IfcStructuralLoadSingleForce::MomentZ() const { return *data_->getArgument(6); }
void IfcStructuralLoadSingleForce::setMomentZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcStructuralLoadSingleForce::declaration() const { return *IfcStructuralLoadSingleForce_type; }
Type::Enum IfcStructuralLoadSingleForce::Class() { return Type::IfcStructuralLoadSingleForce; }
IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(IfcAbstractEntity* e) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadSingleForce)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(boost::optional< std::string > v1_Name, boost::optional< double > v2_ForceX, boost::optional< double > v3_ForceY, boost::optional< double > v4_ForceZ, boost::optional< double > v5_MomentX, boost::optional< double > v6_MomentY, boost::optional< double > v7_MomentZ) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_ForceX) { e->setArgument(1,(*v2_ForceX)); } else { e->setArgument(1); } if (v3_ForceY) { e->setArgument(2,(*v3_ForceY)); } else { e->setArgument(2); } if (v4_ForceZ) { e->setArgument(3,(*v4_ForceZ)); } else { e->setArgument(3); } if (v5_MomentX) { e->setArgument(4,(*v5_MomentX)); } else { e->setArgument(4); } if (v6_MomentY) { e->setArgument(5,(*v6_MomentY)); } else { e->setArgument(5); } if (v7_MomentZ) { e->setArgument(6,(*v7_MomentZ)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadSingleForceWarping
bool IfcStructuralLoadSingleForceWarping::hasWarpingMoment() const { return !data_->getArgument(7)->isNull(); }
double IfcStructuralLoadSingleForceWarping::WarpingMoment() const { return *data_->getArgument(7); }
void IfcStructuralLoadSingleForceWarping::setWarpingMoment(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcStructuralLoadSingleForceWarping::declaration() const { return *IfcStructuralLoadSingleForceWarping_type; }
Type::Enum IfcStructuralLoadSingleForceWarping::Class() { return Type::IfcStructuralLoadSingleForceWarping; }
IfcStructuralLoadSingleForceWarping::IfcStructuralLoadSingleForceWarping(IfcAbstractEntity* e) : IfcStructuralLoadSingleForce((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadSingleForceWarping)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadSingleForceWarping::IfcStructuralLoadSingleForceWarping(boost::optional< std::string > v1_Name, boost::optional< double > v2_ForceX, boost::optional< double > v3_ForceY, boost::optional< double > v4_ForceZ, boost::optional< double > v5_MomentX, boost::optional< double > v6_MomentY, boost::optional< double > v7_MomentZ, boost::optional< double > v8_WarpingMoment) : IfcStructuralLoadSingleForce((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_ForceX) { e->setArgument(1,(*v2_ForceX)); } else { e->setArgument(1); } if (v3_ForceY) { e->setArgument(2,(*v3_ForceY)); } else { e->setArgument(2); } if (v4_ForceZ) { e->setArgument(3,(*v4_ForceZ)); } else { e->setArgument(3); } if (v5_MomentX) { e->setArgument(4,(*v5_MomentX)); } else { e->setArgument(4); } if (v6_MomentY) { e->setArgument(5,(*v6_MomentY)); } else { e->setArgument(5); } if (v7_MomentZ) { e->setArgument(6,(*v7_MomentZ)); } else { e->setArgument(6); } if (v8_WarpingMoment) { e->setArgument(7,(*v8_WarpingMoment)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadStatic


const IfcParse::entity& IfcStructuralLoadStatic::declaration() const { return *IfcStructuralLoadStatic_type; }
Type::Enum IfcStructuralLoadStatic::Class() { return Type::IfcStructuralLoadStatic; }
IfcStructuralLoadStatic::IfcStructuralLoadStatic(IfcAbstractEntity* e) : IfcStructuralLoad((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadStatic)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< std::string > v1_Name) : IfcStructuralLoad((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadTemperature
bool IfcStructuralLoadTemperature::hasDeltaT_Constant() const { return !data_->getArgument(1)->isNull(); }
double IfcStructuralLoadTemperature::DeltaT_Constant() const { return *data_->getArgument(1); }
void IfcStructuralLoadTemperature::setDeltaT_Constant(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcStructuralLoadTemperature::hasDeltaT_Y() const { return !data_->getArgument(2)->isNull(); }
double IfcStructuralLoadTemperature::DeltaT_Y() const { return *data_->getArgument(2); }
void IfcStructuralLoadTemperature::setDeltaT_Y(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcStructuralLoadTemperature::hasDeltaT_Z() const { return !data_->getArgument(3)->isNull(); }
double IfcStructuralLoadTemperature::DeltaT_Z() const { return *data_->getArgument(3); }
void IfcStructuralLoadTemperature::setDeltaT_Z(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcStructuralLoadTemperature::declaration() const { return *IfcStructuralLoadTemperature_type; }
Type::Enum IfcStructuralLoadTemperature::Class() { return Type::IfcStructuralLoadTemperature; }
IfcStructuralLoadTemperature::IfcStructuralLoadTemperature(IfcAbstractEntity* e) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadTemperature)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadTemperature::IfcStructuralLoadTemperature(boost::optional< std::string > v1_Name, boost::optional< double > v2_DeltaT_Constant, boost::optional< double > v3_DeltaT_Y, boost::optional< double > v4_DeltaT_Z) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DeltaT_Constant) { e->setArgument(1,(*v2_DeltaT_Constant)); } else { e->setArgument(1); } if (v3_DeltaT_Y) { e->setArgument(2,(*v3_DeltaT_Y)); } else { e->setArgument(2); } if (v4_DeltaT_Z) { e->setArgument(3,(*v4_DeltaT_Z)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralMember

IfcRelConnectsStructuralElement::list::ptr IfcStructuralMember::ReferencesElement() const { return data_->getInverse(Type::IfcRelConnectsStructuralElement, 5)->as<IfcRelConnectsStructuralElement>(); }
IfcRelConnectsStructuralMember::list::ptr IfcStructuralMember::ConnectedBy() const { return data_->getInverse(Type::IfcRelConnectsStructuralMember, 4)->as<IfcRelConnectsStructuralMember>(); }

const IfcParse::entity& IfcStructuralMember::declaration() const { return *IfcStructuralMember_type; }
Type::Enum IfcStructuralMember::Class() { return Type::IfcStructuralMember; }
IfcStructuralMember::IfcStructuralMember(IfcAbstractEntity* e) : IfcStructuralItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralMember)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralMember::IfcStructuralMember(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation) : IfcStructuralItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralPlanarAction
IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum IfcStructuralPlanarAction::ProjectedOrTrue() const { return IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(11)); }
void IfcStructuralPlanarAction::setProjectedOrTrue(IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcProjectedOrTrueLengthEnum::ToString(v)); }


const IfcParse::entity& IfcStructuralPlanarAction::declaration() const { return *IfcStructuralPlanarAction_type; }
Type::Enum IfcStructuralPlanarAction::Class() { return Type::IfcStructuralPlanarAction; }
IfcStructuralPlanarAction::IfcStructuralPlanarAction(IfcAbstractEntity* e) : IfcStructuralAction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralPlanarAction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralPlanarAction::IfcStructuralPlanarAction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, bool v10_DestabilizingLoad, IfcStructuralReaction* v11_CausedBy, IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum v12_ProjectedOrTrue) : IfcStructuralAction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); e->setArgument(9,(v10_DestabilizingLoad)); e->setArgument(10,(v11_CausedBy)); e->setArgument(11,v12_ProjectedOrTrue,IfcProjectedOrTrueLengthEnum::ToString(v12_ProjectedOrTrue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralPlanarActionVarying
IfcShapeAspect* IfcStructuralPlanarActionVarying::VaryingAppliedLoadLocation() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(12))); }
void IfcStructuralPlanarActionVarying::setVaryingAppliedLoadLocation(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
IfcTemplatedEntityList< IfcStructuralLoad >::ptr IfcStructuralPlanarActionVarying::SubsequentAppliedLoads() const { IfcEntityList::ptr es = *data_->getArgument(13); return es->as<IfcStructuralLoad>(); }
void IfcStructuralPlanarActionVarying::setSubsequentAppliedLoads(IfcTemplatedEntityList< IfcStructuralLoad >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v->generalize()); }


const IfcParse::entity& IfcStructuralPlanarActionVarying::declaration() const { return *IfcStructuralPlanarActionVarying_type; }
Type::Enum IfcStructuralPlanarActionVarying::Class() { return Type::IfcStructuralPlanarActionVarying; }
IfcStructuralPlanarActionVarying::IfcStructuralPlanarActionVarying(IfcAbstractEntity* e) : IfcStructuralPlanarAction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralPlanarActionVarying)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralPlanarActionVarying::IfcStructuralPlanarActionVarying(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, bool v10_DestabilizingLoad, IfcStructuralReaction* v11_CausedBy, IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum v12_ProjectedOrTrue, IfcShapeAspect* v13_VaryingAppliedLoadLocation, IfcTemplatedEntityList< IfcStructuralLoad >::ptr v14_SubsequentAppliedLoads) : IfcStructuralPlanarAction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); e->setArgument(9,(v10_DestabilizingLoad)); e->setArgument(10,(v11_CausedBy)); e->setArgument(11,v12_ProjectedOrTrue,IfcProjectedOrTrueLengthEnum::ToString(v12_ProjectedOrTrue)); e->setArgument(12,(v13_VaryingAppliedLoadLocation)); e->setArgument(13,(v14_SubsequentAppliedLoads)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralPointAction


const IfcParse::entity& IfcStructuralPointAction::declaration() const { return *IfcStructuralPointAction_type; }
Type::Enum IfcStructuralPointAction::Class() { return Type::IfcStructuralPointAction; }
IfcStructuralPointAction::IfcStructuralPointAction(IfcAbstractEntity* e) : IfcStructuralAction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralPointAction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralPointAction::IfcStructuralPointAction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, bool v10_DestabilizingLoad, IfcStructuralReaction* v11_CausedBy) : IfcStructuralAction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); e->setArgument(9,(v10_DestabilizingLoad)); e->setArgument(10,(v11_CausedBy)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralPointConnection


const IfcParse::entity& IfcStructuralPointConnection::declaration() const { return *IfcStructuralPointConnection_type; }
Type::Enum IfcStructuralPointConnection::Class() { return Type::IfcStructuralPointConnection; }
IfcStructuralPointConnection::IfcStructuralPointConnection(IfcAbstractEntity* e) : IfcStructuralConnection((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralPointConnection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralPointConnection::IfcStructuralPointConnection(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralConnection((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedCondition)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralPointReaction


const IfcParse::entity& IfcStructuralPointReaction::declaration() const { return *IfcStructuralPointReaction_type; }
Type::Enum IfcStructuralPointReaction::Class() { return Type::IfcStructuralPointReaction; }
IfcStructuralPointReaction::IfcStructuralPointReaction(IfcAbstractEntity* e) : IfcStructuralReaction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralPointReaction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralPointReaction::IfcStructuralPointReaction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal) : IfcStructuralReaction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralProfileProperties
bool IfcStructuralProfileProperties::hasTorsionalConstantX() const { return !data_->getArgument(7)->isNull(); }
double IfcStructuralProfileProperties::TorsionalConstantX() const { return *data_->getArgument(7); }
void IfcStructuralProfileProperties::setTorsionalConstantX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcStructuralProfileProperties::hasMomentOfInertiaYZ() const { return !data_->getArgument(8)->isNull(); }
double IfcStructuralProfileProperties::MomentOfInertiaYZ() const { return *data_->getArgument(8); }
void IfcStructuralProfileProperties::setMomentOfInertiaYZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcStructuralProfileProperties::hasMomentOfInertiaY() const { return !data_->getArgument(9)->isNull(); }
double IfcStructuralProfileProperties::MomentOfInertiaY() const { return *data_->getArgument(9); }
void IfcStructuralProfileProperties::setMomentOfInertiaY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcStructuralProfileProperties::hasMomentOfInertiaZ() const { return !data_->getArgument(10)->isNull(); }
double IfcStructuralProfileProperties::MomentOfInertiaZ() const { return *data_->getArgument(10); }
void IfcStructuralProfileProperties::setMomentOfInertiaZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcStructuralProfileProperties::hasWarpingConstant() const { return !data_->getArgument(11)->isNull(); }
double IfcStructuralProfileProperties::WarpingConstant() const { return *data_->getArgument(11); }
void IfcStructuralProfileProperties::setWarpingConstant(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcStructuralProfileProperties::hasShearCentreZ() const { return !data_->getArgument(12)->isNull(); }
double IfcStructuralProfileProperties::ShearCentreZ() const { return *data_->getArgument(12); }
void IfcStructuralProfileProperties::setShearCentreZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcStructuralProfileProperties::hasShearCentreY() const { return !data_->getArgument(13)->isNull(); }
double IfcStructuralProfileProperties::ShearCentreY() const { return *data_->getArgument(13); }
void IfcStructuralProfileProperties::setShearCentreY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcStructuralProfileProperties::hasShearDeformationAreaZ() const { return !data_->getArgument(14)->isNull(); }
double IfcStructuralProfileProperties::ShearDeformationAreaZ() const { return *data_->getArgument(14); }
void IfcStructuralProfileProperties::setShearDeformationAreaZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcStructuralProfileProperties::hasShearDeformationAreaY() const { return !data_->getArgument(15)->isNull(); }
double IfcStructuralProfileProperties::ShearDeformationAreaY() const { return *data_->getArgument(15); }
void IfcStructuralProfileProperties::setShearDeformationAreaY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }
bool IfcStructuralProfileProperties::hasMaximumSectionModulusY() const { return !data_->getArgument(16)->isNull(); }
double IfcStructuralProfileProperties::MaximumSectionModulusY() const { return *data_->getArgument(16); }
void IfcStructuralProfileProperties::setMaximumSectionModulusY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v); }
bool IfcStructuralProfileProperties::hasMinimumSectionModulusY() const { return !data_->getArgument(17)->isNull(); }
double IfcStructuralProfileProperties::MinimumSectionModulusY() const { return *data_->getArgument(17); }
void IfcStructuralProfileProperties::setMinimumSectionModulusY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(17,v); }
bool IfcStructuralProfileProperties::hasMaximumSectionModulusZ() const { return !data_->getArgument(18)->isNull(); }
double IfcStructuralProfileProperties::MaximumSectionModulusZ() const { return *data_->getArgument(18); }
void IfcStructuralProfileProperties::setMaximumSectionModulusZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(18,v); }
bool IfcStructuralProfileProperties::hasMinimumSectionModulusZ() const { return !data_->getArgument(19)->isNull(); }
double IfcStructuralProfileProperties::MinimumSectionModulusZ() const { return *data_->getArgument(19); }
void IfcStructuralProfileProperties::setMinimumSectionModulusZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(19,v); }
bool IfcStructuralProfileProperties::hasTorsionalSectionModulus() const { return !data_->getArgument(20)->isNull(); }
double IfcStructuralProfileProperties::TorsionalSectionModulus() const { return *data_->getArgument(20); }
void IfcStructuralProfileProperties::setTorsionalSectionModulus(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(20,v); }
bool IfcStructuralProfileProperties::hasCentreOfGravityInX() const { return !data_->getArgument(21)->isNull(); }
double IfcStructuralProfileProperties::CentreOfGravityInX() const { return *data_->getArgument(21); }
void IfcStructuralProfileProperties::setCentreOfGravityInX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(21,v); }
bool IfcStructuralProfileProperties::hasCentreOfGravityInY() const { return !data_->getArgument(22)->isNull(); }
double IfcStructuralProfileProperties::CentreOfGravityInY() const { return *data_->getArgument(22); }
void IfcStructuralProfileProperties::setCentreOfGravityInY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(22,v); }


const IfcParse::entity& IfcStructuralProfileProperties::declaration() const { return *IfcStructuralProfileProperties_type; }
Type::Enum IfcStructuralProfileProperties::Class() { return Type::IfcStructuralProfileProperties; }
IfcStructuralProfileProperties::IfcStructuralProfileProperties(IfcAbstractEntity* e) : IfcGeneralProfileProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralProfileProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralProfileProperties::IfcStructuralProfileProperties(boost::optional< std::string > v1_ProfileName, IfcProfileDef* v2_ProfileDefinition, boost::optional< double > v3_PhysicalWeight, boost::optional< double > v4_Perimeter, boost::optional< double > v5_MinimumPlateThickness, boost::optional< double > v6_MaximumPlateThickness, boost::optional< double > v7_CrossSectionArea, boost::optional< double > v8_TorsionalConstantX, boost::optional< double > v9_MomentOfInertiaYZ, boost::optional< double > v10_MomentOfInertiaY, boost::optional< double > v11_MomentOfInertiaZ, boost::optional< double > v12_WarpingConstant, boost::optional< double > v13_ShearCentreZ, boost::optional< double > v14_ShearCentreY, boost::optional< double > v15_ShearDeformationAreaZ, boost::optional< double > v16_ShearDeformationAreaY, boost::optional< double > v17_MaximumSectionModulusY, boost::optional< double > v18_MinimumSectionModulusY, boost::optional< double > v19_MaximumSectionModulusZ, boost::optional< double > v20_MinimumSectionModulusZ, boost::optional< double > v21_TorsionalSectionModulus, boost::optional< double > v22_CentreOfGravityInX, boost::optional< double > v23_CentreOfGravityInY) : IfcGeneralProfileProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_ProfileName) { e->setArgument(0,(*v1_ProfileName)); } else { e->setArgument(0); } e->setArgument(1,(v2_ProfileDefinition)); if (v3_PhysicalWeight) { e->setArgument(2,(*v3_PhysicalWeight)); } else { e->setArgument(2); } if (v4_Perimeter) { e->setArgument(3,(*v4_Perimeter)); } else { e->setArgument(3); } if (v5_MinimumPlateThickness) { e->setArgument(4,(*v5_MinimumPlateThickness)); } else { e->setArgument(4); } if (v6_MaximumPlateThickness) { e->setArgument(5,(*v6_MaximumPlateThickness)); } else { e->setArgument(5); } if (v7_CrossSectionArea) { e->setArgument(6,(*v7_CrossSectionArea)); } else { e->setArgument(6); } if (v8_TorsionalConstantX) { e->setArgument(7,(*v8_TorsionalConstantX)); } else { e->setArgument(7); } if (v9_MomentOfInertiaYZ) { e->setArgument(8,(*v9_MomentOfInertiaYZ)); } else { e->setArgument(8); } if (v10_MomentOfInertiaY) { e->setArgument(9,(*v10_MomentOfInertiaY)); } else { e->setArgument(9); } if (v11_MomentOfInertiaZ) { e->setArgument(10,(*v11_MomentOfInertiaZ)); } else { e->setArgument(10); } if (v12_WarpingConstant) { e->setArgument(11,(*v12_WarpingConstant)); } else { e->setArgument(11); } if (v13_ShearCentreZ) { e->setArgument(12,(*v13_ShearCentreZ)); } else { e->setArgument(12); } if (v14_ShearCentreY) { e->setArgument(13,(*v14_ShearCentreY)); } else { e->setArgument(13); } if (v15_ShearDeformationAreaZ) { e->setArgument(14,(*v15_ShearDeformationAreaZ)); } else { e->setArgument(14); } if (v16_ShearDeformationAreaY) { e->setArgument(15,(*v16_ShearDeformationAreaY)); } else { e->setArgument(15); } if (v17_MaximumSectionModulusY) { e->setArgument(16,(*v17_MaximumSectionModulusY)); } else { e->setArgument(16); } if (v18_MinimumSectionModulusY) { e->setArgument(17,(*v18_MinimumSectionModulusY)); } else { e->setArgument(17); } if (v19_MaximumSectionModulusZ) { e->setArgument(18,(*v19_MaximumSectionModulusZ)); } else { e->setArgument(18); } if (v20_MinimumSectionModulusZ) { e->setArgument(19,(*v20_MinimumSectionModulusZ)); } else { e->setArgument(19); } if (v21_TorsionalSectionModulus) { e->setArgument(20,(*v21_TorsionalSectionModulus)); } else { e->setArgument(20); } if (v22_CentreOfGravityInX) { e->setArgument(21,(*v22_CentreOfGravityInX)); } else { e->setArgument(21); } if (v23_CentreOfGravityInY) { e->setArgument(22,(*v23_CentreOfGravityInY)); } else { e->setArgument(22); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralReaction

IfcStructuralAction::list::ptr IfcStructuralReaction::Causes() const { return data_->getInverse(Type::IfcStructuralAction, 10)->as<IfcStructuralAction>(); }

const IfcParse::entity& IfcStructuralReaction::declaration() const { return *IfcStructuralReaction_type; }
Type::Enum IfcStructuralReaction::Class() { return Type::IfcStructuralReaction; }
IfcStructuralReaction::IfcStructuralReaction(IfcAbstractEntity* e) : IfcStructuralActivity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralReaction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralReaction::IfcStructuralReaction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal) : IfcStructuralActivity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralResultGroup
IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum IfcStructuralResultGroup::TheoryType() const { return IfcAnalysisTheoryTypeEnum::FromString(*data_->getArgument(5)); }
void IfcStructuralResultGroup::setTheoryType(IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcAnalysisTheoryTypeEnum::ToString(v)); }
bool IfcStructuralResultGroup::hasResultForLoadGroup() const { return !data_->getArgument(6)->isNull(); }
IfcStructuralLoadGroup* IfcStructuralResultGroup::ResultForLoadGroup() const { return (IfcStructuralLoadGroup*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcStructuralResultGroup::setResultForLoadGroup(IfcStructuralLoadGroup* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcStructuralResultGroup::IsLinear() const { return *data_->getArgument(7); }
void IfcStructuralResultGroup::setIsLinear(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }

IfcStructuralAnalysisModel::list::ptr IfcStructuralResultGroup::ResultGroupFor() const { return data_->getInverse(Type::IfcStructuralAnalysisModel, 8)->as<IfcStructuralAnalysisModel>(); }

const IfcParse::entity& IfcStructuralResultGroup::declaration() const { return *IfcStructuralResultGroup_type; }
Type::Enum IfcStructuralResultGroup::Class() { return Type::IfcStructuralResultGroup; }
IfcStructuralResultGroup::IfcStructuralResultGroup(IfcAbstractEntity* e) : IfcGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralResultGroup)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum v6_TheoryType, IfcStructuralLoadGroup* v7_ResultForLoadGroup, bool v8_IsLinear) : IfcGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,v6_TheoryType,IfcAnalysisTheoryTypeEnum::ToString(v6_TheoryType)); e->setArgument(6,(v7_ResultForLoadGroup)); e->setArgument(7,(v8_IsLinear)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralSteelProfileProperties
bool IfcStructuralSteelProfileProperties::hasShearAreaZ() const { return !data_->getArgument(23)->isNull(); }
double IfcStructuralSteelProfileProperties::ShearAreaZ() const { return *data_->getArgument(23); }
void IfcStructuralSteelProfileProperties::setShearAreaZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(23,v); }
bool IfcStructuralSteelProfileProperties::hasShearAreaY() const { return !data_->getArgument(24)->isNull(); }
double IfcStructuralSteelProfileProperties::ShearAreaY() const { return *data_->getArgument(24); }
void IfcStructuralSteelProfileProperties::setShearAreaY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(24,v); }
bool IfcStructuralSteelProfileProperties::hasPlasticShapeFactorY() const { return !data_->getArgument(25)->isNull(); }
double IfcStructuralSteelProfileProperties::PlasticShapeFactorY() const { return *data_->getArgument(25); }
void IfcStructuralSteelProfileProperties::setPlasticShapeFactorY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(25,v); }
bool IfcStructuralSteelProfileProperties::hasPlasticShapeFactorZ() const { return !data_->getArgument(26)->isNull(); }
double IfcStructuralSteelProfileProperties::PlasticShapeFactorZ() const { return *data_->getArgument(26); }
void IfcStructuralSteelProfileProperties::setPlasticShapeFactorZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(26,v); }


const IfcParse::entity& IfcStructuralSteelProfileProperties::declaration() const { return *IfcStructuralSteelProfileProperties_type; }
Type::Enum IfcStructuralSteelProfileProperties::Class() { return Type::IfcStructuralSteelProfileProperties; }
IfcStructuralSteelProfileProperties::IfcStructuralSteelProfileProperties(IfcAbstractEntity* e) : IfcStructuralProfileProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralSteelProfileProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralSteelProfileProperties::IfcStructuralSteelProfileProperties(boost::optional< std::string > v1_ProfileName, IfcProfileDef* v2_ProfileDefinition, boost::optional< double > v3_PhysicalWeight, boost::optional< double > v4_Perimeter, boost::optional< double > v5_MinimumPlateThickness, boost::optional< double > v6_MaximumPlateThickness, boost::optional< double > v7_CrossSectionArea, boost::optional< double > v8_TorsionalConstantX, boost::optional< double > v9_MomentOfInertiaYZ, boost::optional< double > v10_MomentOfInertiaY, boost::optional< double > v11_MomentOfInertiaZ, boost::optional< double > v12_WarpingConstant, boost::optional< double > v13_ShearCentreZ, boost::optional< double > v14_ShearCentreY, boost::optional< double > v15_ShearDeformationAreaZ, boost::optional< double > v16_ShearDeformationAreaY, boost::optional< double > v17_MaximumSectionModulusY, boost::optional< double > v18_MinimumSectionModulusY, boost::optional< double > v19_MaximumSectionModulusZ, boost::optional< double > v20_MinimumSectionModulusZ, boost::optional< double > v21_TorsionalSectionModulus, boost::optional< double > v22_CentreOfGravityInX, boost::optional< double > v23_CentreOfGravityInY, boost::optional< double > v24_ShearAreaZ, boost::optional< double > v25_ShearAreaY, boost::optional< double > v26_PlasticShapeFactorY, boost::optional< double > v27_PlasticShapeFactorZ) : IfcStructuralProfileProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_ProfileName) { e->setArgument(0,(*v1_ProfileName)); } else { e->setArgument(0); } e->setArgument(1,(v2_ProfileDefinition)); if (v3_PhysicalWeight) { e->setArgument(2,(*v3_PhysicalWeight)); } else { e->setArgument(2); } if (v4_Perimeter) { e->setArgument(3,(*v4_Perimeter)); } else { e->setArgument(3); } if (v5_MinimumPlateThickness) { e->setArgument(4,(*v5_MinimumPlateThickness)); } else { e->setArgument(4); } if (v6_MaximumPlateThickness) { e->setArgument(5,(*v6_MaximumPlateThickness)); } else { e->setArgument(5); } if (v7_CrossSectionArea) { e->setArgument(6,(*v7_CrossSectionArea)); } else { e->setArgument(6); } if (v8_TorsionalConstantX) { e->setArgument(7,(*v8_TorsionalConstantX)); } else { e->setArgument(7); } if (v9_MomentOfInertiaYZ) { e->setArgument(8,(*v9_MomentOfInertiaYZ)); } else { e->setArgument(8); } if (v10_MomentOfInertiaY) { e->setArgument(9,(*v10_MomentOfInertiaY)); } else { e->setArgument(9); } if (v11_MomentOfInertiaZ) { e->setArgument(10,(*v11_MomentOfInertiaZ)); } else { e->setArgument(10); } if (v12_WarpingConstant) { e->setArgument(11,(*v12_WarpingConstant)); } else { e->setArgument(11); } if (v13_ShearCentreZ) { e->setArgument(12,(*v13_ShearCentreZ)); } else { e->setArgument(12); } if (v14_ShearCentreY) { e->setArgument(13,(*v14_ShearCentreY)); } else { e->setArgument(13); } if (v15_ShearDeformationAreaZ) { e->setArgument(14,(*v15_ShearDeformationAreaZ)); } else { e->setArgument(14); } if (v16_ShearDeformationAreaY) { e->setArgument(15,(*v16_ShearDeformationAreaY)); } else { e->setArgument(15); } if (v17_MaximumSectionModulusY) { e->setArgument(16,(*v17_MaximumSectionModulusY)); } else { e->setArgument(16); } if (v18_MinimumSectionModulusY) { e->setArgument(17,(*v18_MinimumSectionModulusY)); } else { e->setArgument(17); } if (v19_MaximumSectionModulusZ) { e->setArgument(18,(*v19_MaximumSectionModulusZ)); } else { e->setArgument(18); } if (v20_MinimumSectionModulusZ) { e->setArgument(19,(*v20_MinimumSectionModulusZ)); } else { e->setArgument(19); } if (v21_TorsionalSectionModulus) { e->setArgument(20,(*v21_TorsionalSectionModulus)); } else { e->setArgument(20); } if (v22_CentreOfGravityInX) { e->setArgument(21,(*v22_CentreOfGravityInX)); } else { e->setArgument(21); } if (v23_CentreOfGravityInY) { e->setArgument(22,(*v23_CentreOfGravityInY)); } else { e->setArgument(22); } if (v24_ShearAreaZ) { e->setArgument(23,(*v24_ShearAreaZ)); } else { e->setArgument(23); } if (v25_ShearAreaY) { e->setArgument(24,(*v25_ShearAreaY)); } else { e->setArgument(24); } if (v26_PlasticShapeFactorY) { e->setArgument(25,(*v26_PlasticShapeFactorY)); } else { e->setArgument(25); } if (v27_PlasticShapeFactorZ) { e->setArgument(26,(*v27_PlasticShapeFactorZ)); } else { e->setArgument(26); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralSurfaceConnection


const IfcParse::entity& IfcStructuralSurfaceConnection::declaration() const { return *IfcStructuralSurfaceConnection_type; }
Type::Enum IfcStructuralSurfaceConnection::Class() { return Type::IfcStructuralSurfaceConnection; }
IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(IfcAbstractEntity* e) : IfcStructuralConnection((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralSurfaceConnection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralConnection((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedCondition)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralSurfaceMember
IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceTypeEnum IfcStructuralSurfaceMember::PredefinedType() const { return IfcStructuralSurfaceTypeEnum::FromString(*data_->getArgument(7)); }
void IfcStructuralSurfaceMember::setPredefinedType(IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcStructuralSurfaceTypeEnum::ToString(v)); }
bool IfcStructuralSurfaceMember::hasThickness() const { return !data_->getArgument(8)->isNull(); }
double IfcStructuralSurfaceMember::Thickness() const { return *data_->getArgument(8); }
void IfcStructuralSurfaceMember::setThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcStructuralSurfaceMember::declaration() const { return *IfcStructuralSurfaceMember_type; }
Type::Enum IfcStructuralSurfaceMember::Class() { return Type::IfcStructuralSurfaceMember; }
IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(IfcAbstractEntity* e) : IfcStructuralMember((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralSurfaceMember)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceTypeEnum v8_PredefinedType, boost::optional< double > v9_Thickness) : IfcStructuralMember((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,v8_PredefinedType,IfcStructuralSurfaceTypeEnum::ToString(v8_PredefinedType)); if (v9_Thickness) { e->setArgument(8,(*v9_Thickness)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralSurfaceMemberVarying
std::vector< double > /*[2:?]*/ IfcStructuralSurfaceMemberVarying::SubsequentThickness() const { return *data_->getArgument(9); }
void IfcStructuralSurfaceMemberVarying::setSubsequentThickness(std::vector< double > /*[2:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
IfcShapeAspect* IfcStructuralSurfaceMemberVarying::VaryingThicknessLocation() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcStructuralSurfaceMemberVarying::setVaryingThicknessLocation(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcStructuralSurfaceMemberVarying::declaration() const { return *IfcStructuralSurfaceMemberVarying_type; }
Type::Enum IfcStructuralSurfaceMemberVarying::Class() { return Type::IfcStructuralSurfaceMemberVarying; }
IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(IfcAbstractEntity* e) : IfcStructuralSurfaceMember((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralSurfaceMemberVarying)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceTypeEnum v8_PredefinedType, boost::optional< double > v9_Thickness, std::vector< double > /*[2:?]*/ v10_SubsequentThickness, IfcShapeAspect* v11_VaryingThicknessLocation) : IfcStructuralSurfaceMember((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,v8_PredefinedType,IfcStructuralSurfaceTypeEnum::ToString(v8_PredefinedType)); if (v9_Thickness) { e->setArgument(8,(*v9_Thickness)); } else { e->setArgument(8); } e->setArgument(9,(v10_SubsequentThickness)); e->setArgument(10,(v11_VaryingThicknessLocation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuredDimensionCallout


const IfcParse::entity& IfcStructuredDimensionCallout::declaration() const { return *IfcStructuredDimensionCallout_type; }
Type::Enum IfcStructuredDimensionCallout::Class() { return Type::IfcStructuredDimensionCallout; }
IfcStructuredDimensionCallout::IfcStructuredDimensionCallout(IfcAbstractEntity* e) : IfcDraughtingCallout((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuredDimensionCallout)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuredDimensionCallout::IfcStructuredDimensionCallout(IfcEntityList::ptr v1_Contents) : IfcDraughtingCallout((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Contents)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStyleModel


const IfcParse::entity& IfcStyleModel::declaration() const { return *IfcStyleModel_type; }
Type::Enum IfcStyleModel::Class() { return Type::IfcStyleModel; }
IfcStyleModel::IfcStyleModel(IfcAbstractEntity* e) : IfcRepresentation((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStyleModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStyleModel::IfcStyleModel(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcRepresentation((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStyledItem
bool IfcStyledItem::hasItem() const { return !data_->getArgument(0)->isNull(); }
IfcRepresentationItem* IfcStyledItem::Item() const { return (IfcRepresentationItem*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcStyledItem::setItem(IfcRepresentationItem* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr IfcStyledItem::Styles() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcPresentationStyleAssignment>(); }
void IfcStyledItem::setStyles(IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
bool IfcStyledItem::hasName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcStyledItem::Name() const { return *data_->getArgument(2); }
void IfcStyledItem::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcStyledItem::declaration() const { return *IfcStyledItem_type; }
Type::Enum IfcStyledItem::Class() { return Type::IfcStyledItem; }
IfcStyledItem::IfcStyledItem(IfcAbstractEntity* e) : IfcRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStyledItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStyledItem::IfcStyledItem(IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStyledRepresentation


const IfcParse::entity& IfcStyledRepresentation::declaration() const { return *IfcStyledRepresentation_type; }
Type::Enum IfcStyledRepresentation::Class() { return Type::IfcStyledRepresentation; }
IfcStyledRepresentation::IfcStyledRepresentation(IfcAbstractEntity* e) : IfcStyleModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStyledRepresentation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStyledRepresentation::IfcStyledRepresentation(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcStyleModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSubContractResource
bool IfcSubContractResource::hasSubContractor() const { return !data_->getArgument(9)->isNull(); }
IfcActorSelect* IfcSubContractResource::SubContractor() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcSubContractResource::setSubContractor(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcSubContractResource::hasJobDescription() const { return !data_->getArgument(10)->isNull(); }
std::string IfcSubContractResource::JobDescription() const { return *data_->getArgument(10); }
void IfcSubContractResource::setJobDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcSubContractResource::declaration() const { return *IfcSubContractResource_type; }
Type::Enum IfcSubContractResource::Class() { return Type::IfcSubContractResource; }
IfcSubContractResource::IfcSubContractResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSubContractResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSubContractResource::IfcSubContractResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_ResourceIdentifier, boost::optional< std::string > v7_ResourceGroup, boost::optional< IfcResourceConsumptionEnum::IfcResourceConsumptionEnum > v8_ResourceConsumption, IfcMeasureWithUnit* v9_BaseQuantity, IfcActorSelect* v10_SubContractor, boost::optional< std::string > v11_JobDescription) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_ResourceIdentifier) { e->setArgument(5,(*v6_ResourceIdentifier)); } else { e->setArgument(5); } if (v7_ResourceGroup) { e->setArgument(6,(*v7_ResourceGroup)); } else { e->setArgument(6); } if (v8_ResourceConsumption) { e->setArgument(7,*v8_ResourceConsumption,IfcResourceConsumptionEnum::ToString(*v8_ResourceConsumption)); } else { e->setArgument(7); } e->setArgument(8,(v9_BaseQuantity)); e->setArgument(9,(v10_SubContractor)); if (v11_JobDescription) { e->setArgument(10,(*v11_JobDescription)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSubedge
IfcEdge* IfcSubedge::ParentEdge() const { return (IfcEdge*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSubedge::setParentEdge(IfcEdge* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcSubedge::declaration() const { return *IfcSubedge_type; }
Type::Enum IfcSubedge::Class() { return Type::IfcSubedge; }
IfcSubedge::IfcSubedge(IfcAbstractEntity* e) : IfcEdge((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSubedge)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSubedge::IfcSubedge(IfcVertex* v1_EdgeStart, IfcVertex* v2_EdgeEnd, IfcEdge* v3_ParentEdge) : IfcEdge((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_EdgeStart)); e->setArgument(1,(v2_EdgeEnd)); e->setArgument(2,(v3_ParentEdge)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurface


const IfcParse::entity& IfcSurface::declaration() const { return *IfcSurface_type; }
Type::Enum IfcSurface::Class() { return Type::IfcSurface; }
IfcSurface::IfcSurface(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurface::IfcSurface() : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceCurveSweptAreaSolid
IfcCurve* IfcSurfaceCurveSweptAreaSolid::Directrix() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSurfaceCurveSweptAreaSolid::setDirectrix(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcSurfaceCurveSweptAreaSolid::StartParam() const { return *data_->getArgument(3); }
void IfcSurfaceCurveSweptAreaSolid::setStartParam(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcSurfaceCurveSweptAreaSolid::EndParam() const { return *data_->getArgument(4); }
void IfcSurfaceCurveSweptAreaSolid::setEndParam(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcSurface* IfcSurfaceCurveSweptAreaSolid::ReferenceSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcSurfaceCurveSweptAreaSolid::setReferenceSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcSurfaceCurveSweptAreaSolid::declaration() const { return *IfcSurfaceCurveSweptAreaSolid_type; }
Type::Enum IfcSurfaceCurveSweptAreaSolid::Class() { return Type::IfcSurfaceCurveSweptAreaSolid; }
IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(IfcAbstractEntity* e) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceCurveSweptAreaSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(IfcProfileDef* v1_SweptArea, IfcAxis2Placement3D* v2_Position, IfcCurve* v3_Directrix, double v4_StartParam, double v5_EndParam, IfcSurface* v6_ReferenceSurface) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptArea)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_Directrix)); e->setArgument(3,(v4_StartParam)); e->setArgument(4,(v5_EndParam)); e->setArgument(5,(v6_ReferenceSurface)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceOfLinearExtrusion
IfcDirection* IfcSurfaceOfLinearExtrusion::ExtrudedDirection() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSurfaceOfLinearExtrusion::setExtrudedDirection(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcSurfaceOfLinearExtrusion::Depth() const { return *data_->getArgument(3); }
void IfcSurfaceOfLinearExtrusion::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcSurfaceOfLinearExtrusion::declaration() const { return *IfcSurfaceOfLinearExtrusion_type; }
Type::Enum IfcSurfaceOfLinearExtrusion::Class() { return Type::IfcSurfaceOfLinearExtrusion; }
IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(IfcAbstractEntity* e) : IfcSweptSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceOfLinearExtrusion)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(IfcProfileDef* v1_SweptCurve, IfcAxis2Placement3D* v2_Position, IfcDirection* v3_ExtrudedDirection, double v4_Depth) : IfcSweptSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptCurve)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_ExtrudedDirection)); e->setArgument(3,(v4_Depth)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceOfRevolution
IfcAxis1Placement* IfcSurfaceOfRevolution::AxisPosition() const { return (IfcAxis1Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSurfaceOfRevolution::setAxisPosition(IfcAxis1Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcSurfaceOfRevolution::declaration() const { return *IfcSurfaceOfRevolution_type; }
Type::Enum IfcSurfaceOfRevolution::Class() { return Type::IfcSurfaceOfRevolution; }
IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(IfcAbstractEntity* e) : IfcSweptSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceOfRevolution)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(IfcProfileDef* v1_SweptCurve, IfcAxis2Placement3D* v2_Position, IfcAxis1Placement* v3_AxisPosition) : IfcSweptSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptCurve)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_AxisPosition)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyle
IfcSurfaceSide::IfcSurfaceSide IfcSurfaceStyle::Side() const { return IfcSurfaceSide::FromString(*data_->getArgument(1)); }
void IfcSurfaceStyle::setSide(IfcSurfaceSide::IfcSurfaceSide v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v,IfcSurfaceSide::ToString(v)); }
IfcEntityList::ptr IfcSurfaceStyle::Styles() const { return *data_->getArgument(2); }
void IfcSurfaceStyle::setStyles(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcSurfaceStyle::declaration() const { return *IfcSurfaceStyle_type; }
Type::Enum IfcSurfaceStyle::Class() { return Type::IfcSurfaceStyle; }
IfcSurfaceStyle::IfcSurfaceStyle(IfcAbstractEntity* e) : IfcPresentationStyle((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyle::IfcSurfaceStyle(boost::optional< std::string > v1_Name, IfcSurfaceSide::IfcSurfaceSide v2_Side, IfcEntityList::ptr v3_Styles) : IfcPresentationStyle((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,v2_Side,IfcSurfaceSide::ToString(v2_Side)); e->setArgument(2,(v3_Styles)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyleLighting
IfcColourRgb* IfcSurfaceStyleLighting::DiffuseTransmissionColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSurfaceStyleLighting::setDiffuseTransmissionColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcColourRgb* IfcSurfaceStyleLighting::DiffuseReflectionColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcSurfaceStyleLighting::setDiffuseReflectionColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcColourRgb* IfcSurfaceStyleLighting::TransmissionColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSurfaceStyleLighting::setTransmissionColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcColourRgb* IfcSurfaceStyleLighting::ReflectanceColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcSurfaceStyleLighting::setReflectanceColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcSurfaceStyleLighting::declaration() const { return *IfcSurfaceStyleLighting_type; }
Type::Enum IfcSurfaceStyleLighting::Class() { return Type::IfcSurfaceStyleLighting; }
IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcSurfaceStyleLighting)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(IfcColourRgb* v1_DiffuseTransmissionColour, IfcColourRgb* v2_DiffuseReflectionColour, IfcColourRgb* v3_TransmissionColour, IfcColourRgb* v4_ReflectanceColour) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_DiffuseTransmissionColour)); e->setArgument(1,(v2_DiffuseReflectionColour)); e->setArgument(2,(v3_TransmissionColour)); e->setArgument(3,(v4_ReflectanceColour)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyleRefraction
bool IfcSurfaceStyleRefraction::hasRefractionIndex() const { return !data_->getArgument(0)->isNull(); }
double IfcSurfaceStyleRefraction::RefractionIndex() const { return *data_->getArgument(0); }
void IfcSurfaceStyleRefraction::setRefractionIndex(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcSurfaceStyleRefraction::hasDispersionFactor() const { return !data_->getArgument(1)->isNull(); }
double IfcSurfaceStyleRefraction::DispersionFactor() const { return *data_->getArgument(1); }
void IfcSurfaceStyleRefraction::setDispersionFactor(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcSurfaceStyleRefraction::declaration() const { return *IfcSurfaceStyleRefraction_type; }
Type::Enum IfcSurfaceStyleRefraction::Class() { return Type::IfcSurfaceStyleRefraction; }
IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcSurfaceStyleRefraction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(boost::optional< double > v1_RefractionIndex, boost::optional< double > v2_DispersionFactor) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_RefractionIndex) { e->setArgument(0,(*v1_RefractionIndex)); } else { e->setArgument(0); } if (v2_DispersionFactor) { e->setArgument(1,(*v2_DispersionFactor)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyleRendering
bool IfcSurfaceStyleRendering::hasTransparency() const { return !data_->getArgument(1)->isNull(); }
double IfcSurfaceStyleRendering::Transparency() const { return *data_->getArgument(1); }
void IfcSurfaceStyleRendering::setTransparency(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcSurfaceStyleRendering::hasDiffuseColour() const { return !data_->getArgument(2)->isNull(); }
IfcColourOrFactor* IfcSurfaceStyleRendering::DiffuseColour() const { return (IfcColourOrFactor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSurfaceStyleRendering::setDiffuseColour(IfcColourOrFactor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcSurfaceStyleRendering::hasTransmissionColour() const { return !data_->getArgument(3)->isNull(); }
IfcColourOrFactor* IfcSurfaceStyleRendering::TransmissionColour() const { return (IfcColourOrFactor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcSurfaceStyleRendering::setTransmissionColour(IfcColourOrFactor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcSurfaceStyleRendering::hasDiffuseTransmissionColour() const { return !data_->getArgument(4)->isNull(); }
IfcColourOrFactor* IfcSurfaceStyleRendering::DiffuseTransmissionColour() const { return (IfcColourOrFactor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcSurfaceStyleRendering::setDiffuseTransmissionColour(IfcColourOrFactor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcSurfaceStyleRendering::hasReflectionColour() const { return !data_->getArgument(5)->isNull(); }
IfcColourOrFactor* IfcSurfaceStyleRendering::ReflectionColour() const { return (IfcColourOrFactor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcSurfaceStyleRendering::setReflectionColour(IfcColourOrFactor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcSurfaceStyleRendering::hasSpecularColour() const { return !data_->getArgument(6)->isNull(); }
IfcColourOrFactor* IfcSurfaceStyleRendering::SpecularColour() const { return (IfcColourOrFactor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcSurfaceStyleRendering::setSpecularColour(IfcColourOrFactor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcSurfaceStyleRendering::hasSpecularHighlight() const { return !data_->getArgument(7)->isNull(); }
IfcSpecularHighlightSelect* IfcSurfaceStyleRendering::SpecularHighlight() const { return (IfcSpecularHighlightSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcSurfaceStyleRendering::setSpecularHighlight(IfcSpecularHighlightSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcReflectanceMethodEnum::IfcReflectanceMethodEnum IfcSurfaceStyleRendering::ReflectanceMethod() const { return IfcReflectanceMethodEnum::FromString(*data_->getArgument(8)); }
void IfcSurfaceStyleRendering::setReflectanceMethod(IfcReflectanceMethodEnum::IfcReflectanceMethodEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcReflectanceMethodEnum::ToString(v)); }


const IfcParse::entity& IfcSurfaceStyleRendering::declaration() const { return *IfcSurfaceStyleRendering_type; }
Type::Enum IfcSurfaceStyleRendering::Class() { return Type::IfcSurfaceStyleRendering; }
IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(IfcAbstractEntity* e) : IfcSurfaceStyleShading((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceStyleRendering)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency, IfcColourOrFactor* v3_DiffuseColour, IfcColourOrFactor* v4_TransmissionColour, IfcColourOrFactor* v5_DiffuseTransmissionColour, IfcColourOrFactor* v6_ReflectionColour, IfcColourOrFactor* v7_SpecularColour, IfcSpecularHighlightSelect* v8_SpecularHighlight, IfcReflectanceMethodEnum::IfcReflectanceMethodEnum v9_ReflectanceMethod) : IfcSurfaceStyleShading((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SurfaceColour)); if (v2_Transparency) { e->setArgument(1,(*v2_Transparency)); } else { e->setArgument(1); } e->setArgument(2,(v3_DiffuseColour)); e->setArgument(3,(v4_TransmissionColour)); e->setArgument(4,(v5_DiffuseTransmissionColour)); e->setArgument(5,(v6_ReflectionColour)); e->setArgument(6,(v7_SpecularColour)); e->setArgument(7,(v8_SpecularHighlight)); e->setArgument(8,v9_ReflectanceMethod,IfcReflectanceMethodEnum::ToString(v9_ReflectanceMethod)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyleShading
IfcColourRgb* IfcSurfaceStyleShading::SurfaceColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSurfaceStyleShading::setSurfaceColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcSurfaceStyleShading::declaration() const { return *IfcSurfaceStyleShading_type; }
Type::Enum IfcSurfaceStyleShading::Class() { return Type::IfcSurfaceStyleShading; }
IfcSurfaceStyleShading::IfcSurfaceStyleShading(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcSurfaceStyleShading)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyleShading::IfcSurfaceStyleShading(IfcColourRgb* v1_SurfaceColour) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SurfaceColour)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyleWithTextures
IfcTemplatedEntityList< IfcSurfaceTexture >::ptr IfcSurfaceStyleWithTextures::Textures() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcSurfaceTexture>(); }
void IfcSurfaceStyleWithTextures::setTextures(IfcTemplatedEntityList< IfcSurfaceTexture >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }


const IfcParse::entity& IfcSurfaceStyleWithTextures::declaration() const { return *IfcSurfaceStyleWithTextures_type; }
Type::Enum IfcSurfaceStyleWithTextures::Class() { return Type::IfcSurfaceStyleWithTextures; }
IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcSurfaceStyleWithTextures)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(IfcTemplatedEntityList< IfcSurfaceTexture >::ptr v1_Textures) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Textures)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceTexture
bool IfcSurfaceTexture::RepeatS() const { return *data_->getArgument(0); }
void IfcSurfaceTexture::setRepeatS(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcSurfaceTexture::RepeatT() const { return *data_->getArgument(1); }
void IfcSurfaceTexture::setRepeatT(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcSurfaceTextureEnum::IfcSurfaceTextureEnum IfcSurfaceTexture::TextureType() const { return IfcSurfaceTextureEnum::FromString(*data_->getArgument(2)); }
void IfcSurfaceTexture::setTextureType(IfcSurfaceTextureEnum::IfcSurfaceTextureEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcSurfaceTextureEnum::ToString(v)); }
bool IfcSurfaceTexture::hasTextureTransform() const { return !data_->getArgument(3)->isNull(); }
IfcCartesianTransformationOperator2D* IfcSurfaceTexture::TextureTransform() const { return (IfcCartesianTransformationOperator2D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcSurfaceTexture::setTextureTransform(IfcCartesianTransformationOperator2D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcSurfaceTexture::declaration() const { return *IfcSurfaceTexture_type; }
Type::Enum IfcSurfaceTexture::Class() { return Type::IfcSurfaceTexture; }
IfcSurfaceTexture::IfcSurfaceTexture(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcSurfaceTexture)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceTexture::IfcSurfaceTexture(bool v1_RepeatS, bool v2_RepeatT, IfcSurfaceTextureEnum::IfcSurfaceTextureEnum v3_TextureType, IfcCartesianTransformationOperator2D* v4_TextureTransform) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RepeatS)); e->setArgument(1,(v2_RepeatT)); e->setArgument(2,v3_TextureType,IfcSurfaceTextureEnum::ToString(v3_TextureType)); e->setArgument(3,(v4_TextureTransform)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSweptAreaSolid
IfcProfileDef* IfcSweptAreaSolid::SweptArea() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSweptAreaSolid::setSweptArea(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcAxis2Placement3D* IfcSweptAreaSolid::Position() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcSweptAreaSolid::setPosition(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcSweptAreaSolid::declaration() const { return *IfcSweptAreaSolid_type; }
Type::Enum IfcSweptAreaSolid::Class() { return Type::IfcSweptAreaSolid; }
IfcSweptAreaSolid::IfcSweptAreaSolid(IfcAbstractEntity* e) : IfcSolidModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSweptAreaSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSweptAreaSolid::IfcSweptAreaSolid(IfcProfileDef* v1_SweptArea, IfcAxis2Placement3D* v2_Position) : IfcSolidModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptArea)); e->setArgument(1,(v2_Position)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSweptDiskSolid
IfcCurve* IfcSweptDiskSolid::Directrix() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSweptDiskSolid::setDirectrix(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcSweptDiskSolid::Radius() const { return *data_->getArgument(1); }
void IfcSweptDiskSolid::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcSweptDiskSolid::hasInnerRadius() const { return !data_->getArgument(2)->isNull(); }
double IfcSweptDiskSolid::InnerRadius() const { return *data_->getArgument(2); }
void IfcSweptDiskSolid::setInnerRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcSweptDiskSolid::StartParam() const { return *data_->getArgument(3); }
void IfcSweptDiskSolid::setStartParam(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcSweptDiskSolid::EndParam() const { return *data_->getArgument(4); }
void IfcSweptDiskSolid::setEndParam(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcSweptDiskSolid::declaration() const { return *IfcSweptDiskSolid_type; }
Type::Enum IfcSweptDiskSolid::Class() { return Type::IfcSweptDiskSolid; }
IfcSweptDiskSolid::IfcSweptDiskSolid(IfcAbstractEntity* e) : IfcSolidModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSweptDiskSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSweptDiskSolid::IfcSweptDiskSolid(IfcCurve* v1_Directrix, double v2_Radius, boost::optional< double > v3_InnerRadius, double v4_StartParam, double v5_EndParam) : IfcSolidModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Directrix)); e->setArgument(1,(v2_Radius)); if (v3_InnerRadius) { e->setArgument(2,(*v3_InnerRadius)); } else { e->setArgument(2); } e->setArgument(3,(v4_StartParam)); e->setArgument(4,(v5_EndParam)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSweptSurface
IfcProfileDef* IfcSweptSurface::SweptCurve() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSweptSurface::setSweptCurve(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcAxis2Placement3D* IfcSweptSurface::Position() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcSweptSurface::setPosition(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcSweptSurface::declaration() const { return *IfcSweptSurface_type; }
Type::Enum IfcSweptSurface::Class() { return Type::IfcSweptSurface; }
IfcSweptSurface::IfcSweptSurface(IfcAbstractEntity* e) : IfcSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSweptSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSweptSurface::IfcSweptSurface(IfcProfileDef* v1_SweptCurve, IfcAxis2Placement3D* v2_Position) : IfcSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptCurve)); e->setArgument(1,(v2_Position)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSwitchingDeviceType
IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum IfcSwitchingDeviceType::PredefinedType() const { return IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSwitchingDeviceType::setPredefinedType(IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSwitchingDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSwitchingDeviceType::declaration() const { return *IfcSwitchingDeviceType_type; }
Type::Enum IfcSwitchingDeviceType::Class() { return Type::IfcSwitchingDeviceType; }
IfcSwitchingDeviceType::IfcSwitchingDeviceType(IfcAbstractEntity* e) : IfcFlowControllerType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSwitchingDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSwitchingDeviceType::IfcSwitchingDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum v10_PredefinedType) : IfcFlowControllerType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSwitchingDeviceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSymbolStyle
IfcSymbolStyleSelect* IfcSymbolStyle::StyleOfSymbol() const { return (IfcSymbolStyleSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcSymbolStyle::setStyleOfSymbol(IfcSymbolStyleSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcSymbolStyle::declaration() const { return *IfcSymbolStyle_type; }
Type::Enum IfcSymbolStyle::Class() { return Type::IfcSymbolStyle; }
IfcSymbolStyle::IfcSymbolStyle(IfcAbstractEntity* e) : IfcPresentationStyle((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSymbolStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSymbolStyle::IfcSymbolStyle(boost::optional< std::string > v1_Name, IfcSymbolStyleSelect* v2_StyleOfSymbol) : IfcPresentationStyle((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_StyleOfSymbol)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSystem

IfcRelServicesBuildings::list::ptr IfcSystem::ServicesBuildings() const { return data_->getInverse(Type::IfcRelServicesBuildings, 4)->as<IfcRelServicesBuildings>(); }

const IfcParse::entity& IfcSystem::declaration() const { return *IfcSystem_type; }
Type::Enum IfcSystem::Class() { return Type::IfcSystem; }
IfcSystem::IfcSystem(IfcAbstractEntity* e) : IfcGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSystem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSystem::IfcSystem(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSystemFurnitureElementType


const IfcParse::entity& IfcSystemFurnitureElementType::declaration() const { return *IfcSystemFurnitureElementType_type; }
Type::Enum IfcSystemFurnitureElementType::Class() { return Type::IfcSystemFurnitureElementType; }
IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(IfcAbstractEntity* e) : IfcFurnishingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSystemFurnitureElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcFurnishingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTShapeProfileDef
double IfcTShapeProfileDef::Depth() const { return *data_->getArgument(3); }
void IfcTShapeProfileDef::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcTShapeProfileDef::FlangeWidth() const { return *data_->getArgument(4); }
void IfcTShapeProfileDef::setFlangeWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcTShapeProfileDef::WebThickness() const { return *data_->getArgument(5); }
void IfcTShapeProfileDef::setWebThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcTShapeProfileDef::FlangeThickness() const { return *data_->getArgument(6); }
void IfcTShapeProfileDef::setFlangeThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcTShapeProfileDef::hasFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcTShapeProfileDef::FilletRadius() const { return *data_->getArgument(7); }
void IfcTShapeProfileDef::setFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcTShapeProfileDef::hasFlangeEdgeRadius() const { return !data_->getArgument(8)->isNull(); }
double IfcTShapeProfileDef::FlangeEdgeRadius() const { return *data_->getArgument(8); }
void IfcTShapeProfileDef::setFlangeEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcTShapeProfileDef::hasWebEdgeRadius() const { return !data_->getArgument(9)->isNull(); }
double IfcTShapeProfileDef::WebEdgeRadius() const { return *data_->getArgument(9); }
void IfcTShapeProfileDef::setWebEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcTShapeProfileDef::hasWebSlope() const { return !data_->getArgument(10)->isNull(); }
double IfcTShapeProfileDef::WebSlope() const { return *data_->getArgument(10); }
void IfcTShapeProfileDef::setWebSlope(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcTShapeProfileDef::hasFlangeSlope() const { return !data_->getArgument(11)->isNull(); }
double IfcTShapeProfileDef::FlangeSlope() const { return *data_->getArgument(11); }
void IfcTShapeProfileDef::setFlangeSlope(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcTShapeProfileDef::hasCentreOfGravityInY() const { return !data_->getArgument(12)->isNull(); }
double IfcTShapeProfileDef::CentreOfGravityInY() const { return *data_->getArgument(12); }
void IfcTShapeProfileDef::setCentreOfGravityInY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcTShapeProfileDef::declaration() const { return *IfcTShapeProfileDef_type; }
Type::Enum IfcTShapeProfileDef::Class() { return Type::IfcTShapeProfileDef; }
IfcTShapeProfileDef::IfcTShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTShapeProfileDef::IfcTShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_FlangeEdgeRadius, boost::optional< double > v10_WebEdgeRadius, boost::optional< double > v11_WebSlope, boost::optional< double > v12_FlangeSlope, boost::optional< double > v13_CentreOfGravityInY) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_Depth)); e->setArgument(4,(v5_FlangeWidth)); e->setArgument(5,(v6_WebThickness)); e->setArgument(6,(v7_FlangeThickness)); if (v8_FilletRadius) { e->setArgument(7,(*v8_FilletRadius)); } else { e->setArgument(7); } if (v9_FlangeEdgeRadius) { e->setArgument(8,(*v9_FlangeEdgeRadius)); } else { e->setArgument(8); } if (v10_WebEdgeRadius) { e->setArgument(9,(*v10_WebEdgeRadius)); } else { e->setArgument(9); } if (v11_WebSlope) { e->setArgument(10,(*v11_WebSlope)); } else { e->setArgument(10); } if (v12_FlangeSlope) { e->setArgument(11,(*v12_FlangeSlope)); } else { e->setArgument(11); } if (v13_CentreOfGravityInY) { e->setArgument(12,(*v13_CentreOfGravityInY)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTable
std::string IfcTable::Name() const { return *data_->getArgument(0); }
void IfcTable::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcTableRow >::ptr IfcTable::Rows() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcTableRow>(); }
void IfcTable::setRows(IfcTemplatedEntityList< IfcTableRow >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }


const IfcParse::entity& IfcTable::declaration() const { return *IfcTable_type; }
Type::Enum IfcTable::Class() { return Type::IfcTable; }
IfcTable::IfcTable(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTable)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTable::IfcTable(std::string v1_Name, IfcTemplatedEntityList< IfcTableRow >::ptr v2_Rows) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); e->setArgument(1,(v2_Rows)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTableRow
IfcEntityList::ptr IfcTableRow::RowCells() const { return *data_->getArgument(0); }
void IfcTableRow::setRowCells(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcTableRow::IsHeading() const { return *data_->getArgument(1); }
void IfcTableRow::setIsHeading(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }

IfcTable::list::ptr IfcTableRow::OfTable() const { return data_->getInverse(Type::IfcTable, 1)->as<IfcTable>(); }

const IfcParse::entity& IfcTableRow::declaration() const { return *IfcTableRow_type; }
Type::Enum IfcTableRow::Class() { return Type::IfcTableRow; }
IfcTableRow::IfcTableRow(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTableRow)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTableRow::IfcTableRow(IfcEntityList::ptr v1_RowCells, bool v2_IsHeading) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RowCells)); e->setArgument(1,(v2_IsHeading)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTankType
IfcTankTypeEnum::IfcTankTypeEnum IfcTankType::PredefinedType() const { return IfcTankTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTankType::setPredefinedType(IfcTankTypeEnum::IfcTankTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTankTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTankType::declaration() const { return *IfcTankType_type; }
Type::Enum IfcTankType::Class() { return Type::IfcTankType; }
IfcTankType::IfcTankType(IfcAbstractEntity* e) : IfcFlowStorageDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTankType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTankType::IfcTankType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcTankTypeEnum::IfcTankTypeEnum v10_PredefinedType) : IfcFlowStorageDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTankTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTask
std::string IfcTask::TaskId() const { return *data_->getArgument(5); }
void IfcTask::setTaskId(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcTask::hasStatus() const { return !data_->getArgument(6)->isNull(); }
std::string IfcTask::Status() const { return *data_->getArgument(6); }
void IfcTask::setStatus(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcTask::hasWorkMethod() const { return !data_->getArgument(7)->isNull(); }
std::string IfcTask::WorkMethod() const { return *data_->getArgument(7); }
void IfcTask::setWorkMethod(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcTask::IsMilestone() const { return *data_->getArgument(8); }
void IfcTask::setIsMilestone(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcTask::hasPriority() const { return !data_->getArgument(9)->isNull(); }
int IfcTask::Priority() const { return *data_->getArgument(9); }
void IfcTask::setPriority(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcTask::declaration() const { return *IfcTask_type; }
Type::Enum IfcTask::Class() { return Type::IfcTask; }
IfcTask::IfcTask(IfcAbstractEntity* e) : IfcProcess((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTask)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTask::IfcTask(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, std::string v6_TaskId, boost::optional< std::string > v7_Status, boost::optional< std::string > v8_WorkMethod, bool v9_IsMilestone, boost::optional< int > v10_Priority) : IfcProcess((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_TaskId)); if (v7_Status) { e->setArgument(6,(*v7_Status)); } else { e->setArgument(6); } if (v8_WorkMethod) { e->setArgument(7,(*v8_WorkMethod)); } else { e->setArgument(7); } e->setArgument(8,(v9_IsMilestone)); if (v10_Priority) { e->setArgument(9,(*v10_Priority)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTelecomAddress
bool IfcTelecomAddress::hasTelephoneNumbers() const { return !data_->getArgument(3)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcTelecomAddress::TelephoneNumbers() const { return *data_->getArgument(3); }
void IfcTelecomAddress::setTelephoneNumbers(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcTelecomAddress::hasFacsimileNumbers() const { return !data_->getArgument(4)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcTelecomAddress::FacsimileNumbers() const { return *data_->getArgument(4); }
void IfcTelecomAddress::setFacsimileNumbers(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcTelecomAddress::hasPagerNumber() const { return !data_->getArgument(5)->isNull(); }
std::string IfcTelecomAddress::PagerNumber() const { return *data_->getArgument(5); }
void IfcTelecomAddress::setPagerNumber(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcTelecomAddress::hasElectronicMailAddresses() const { return !data_->getArgument(6)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcTelecomAddress::ElectronicMailAddresses() const { return *data_->getArgument(6); }
void IfcTelecomAddress::setElectronicMailAddresses(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcTelecomAddress::hasWWWHomePageURL() const { return !data_->getArgument(7)->isNull(); }
std::string IfcTelecomAddress::WWWHomePageURL() const { return *data_->getArgument(7); }
void IfcTelecomAddress::setWWWHomePageURL(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcTelecomAddress::declaration() const { return *IfcTelecomAddress_type; }
Type::Enum IfcTelecomAddress::Class() { return Type::IfcTelecomAddress; }
IfcTelecomAddress::IfcTelecomAddress(IfcAbstractEntity* e) : IfcAddress((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTelecomAddress)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTelecomAddress::IfcTelecomAddress(boost::optional< IfcAddressTypeEnum::IfcAddressTypeEnum > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_TelephoneNumbers, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_FacsimileNumbers, boost::optional< std::string > v6_PagerNumber, boost::optional< std::vector< std::string > /*[1:?]*/ > v7_ElectronicMailAddresses, boost::optional< std::string > v8_WWWHomePageURL) : IfcAddress((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Purpose) { e->setArgument(0,*v1_Purpose,IfcAddressTypeEnum::ToString(*v1_Purpose)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_UserDefinedPurpose) { e->setArgument(2,(*v3_UserDefinedPurpose)); } else { e->setArgument(2); } if (v4_TelephoneNumbers) { e->setArgument(3,(*v4_TelephoneNumbers)); } else { e->setArgument(3); } if (v5_FacsimileNumbers) { e->setArgument(4,(*v5_FacsimileNumbers)); } else { e->setArgument(4); } if (v6_PagerNumber) { e->setArgument(5,(*v6_PagerNumber)); } else { e->setArgument(5); } if (v7_ElectronicMailAddresses) { e->setArgument(6,(*v7_ElectronicMailAddresses)); } else { e->setArgument(6); } if (v8_WWWHomePageURL) { e->setArgument(7,(*v8_WWWHomePageURL)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTendon
IfcTendonTypeEnum::IfcTendonTypeEnum IfcTendon::PredefinedType() const { return IfcTendonTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTendon::setPredefinedType(IfcTendonTypeEnum::IfcTendonTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTendonTypeEnum::ToString(v)); }
double IfcTendon::NominalDiameter() const { return *data_->getArgument(10); }
void IfcTendon::setNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
double IfcTendon::CrossSectionArea() const { return *data_->getArgument(11); }
void IfcTendon::setCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcTendon::hasTensionForce() const { return !data_->getArgument(12)->isNull(); }
double IfcTendon::TensionForce() const { return *data_->getArgument(12); }
void IfcTendon::setTensionForce(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcTendon::hasPreStress() const { return !data_->getArgument(13)->isNull(); }
double IfcTendon::PreStress() const { return *data_->getArgument(13); }
void IfcTendon::setPreStress(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcTendon::hasFrictionCoefficient() const { return !data_->getArgument(14)->isNull(); }
double IfcTendon::FrictionCoefficient() const { return *data_->getArgument(14); }
void IfcTendon::setFrictionCoefficient(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcTendon::hasAnchorageSlip() const { return !data_->getArgument(15)->isNull(); }
double IfcTendon::AnchorageSlip() const { return *data_->getArgument(15); }
void IfcTendon::setAnchorageSlip(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }
bool IfcTendon::hasMinCurvatureRadius() const { return !data_->getArgument(16)->isNull(); }
double IfcTendon::MinCurvatureRadius() const { return *data_->getArgument(16); }
void IfcTendon::setMinCurvatureRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v); }


const IfcParse::entity& IfcTendon::declaration() const { return *IfcTendon_type; }
Type::Enum IfcTendon::Class() { return Type::IfcTendon; }
IfcTendon::IfcTendon(IfcAbstractEntity* e) : IfcReinforcingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTendon)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTendon::IfcTendon(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, IfcTendonTypeEnum::IfcTendonTypeEnum v10_PredefinedType, double v11_NominalDiameter, double v12_CrossSectionArea, boost::optional< double > v13_TensionForce, boost::optional< double > v14_PreStress, boost::optional< double > v15_FrictionCoefficient, boost::optional< double > v16_AnchorageSlip, boost::optional< double > v17_MinCurvatureRadius) : IfcReinforcingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_SteelGrade) { e->setArgument(8,(*v9_SteelGrade)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTendonTypeEnum::ToString(v10_PredefinedType)); e->setArgument(10,(v11_NominalDiameter)); e->setArgument(11,(v12_CrossSectionArea)); if (v13_TensionForce) { e->setArgument(12,(*v13_TensionForce)); } else { e->setArgument(12); } if (v14_PreStress) { e->setArgument(13,(*v14_PreStress)); } else { e->setArgument(13); } if (v15_FrictionCoefficient) { e->setArgument(14,(*v15_FrictionCoefficient)); } else { e->setArgument(14); } if (v16_AnchorageSlip) { e->setArgument(15,(*v16_AnchorageSlip)); } else { e->setArgument(15); } if (v17_MinCurvatureRadius) { e->setArgument(16,(*v17_MinCurvatureRadius)); } else { e->setArgument(16); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTendonAnchor


const IfcParse::entity& IfcTendonAnchor::declaration() const { return *IfcTendonAnchor_type; }
Type::Enum IfcTendonAnchor::Class() { return Type::IfcTendonAnchor; }
IfcTendonAnchor::IfcTendonAnchor(IfcAbstractEntity* e) : IfcReinforcingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTendonAnchor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTendonAnchor::IfcTendonAnchor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade) : IfcReinforcingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_SteelGrade) { e->setArgument(8,(*v9_SteelGrade)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTerminatorSymbol
IfcAnnotationCurveOccurrence* IfcTerminatorSymbol::AnnotatedCurve() const { return (IfcAnnotationCurveOccurrence*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcTerminatorSymbol::setAnnotatedCurve(IfcAnnotationCurveOccurrence* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcTerminatorSymbol::declaration() const { return *IfcTerminatorSymbol_type; }
Type::Enum IfcTerminatorSymbol::Class() { return Type::IfcTerminatorSymbol; }
IfcTerminatorSymbol::IfcTerminatorSymbol(IfcAbstractEntity* e) : IfcAnnotationSymbolOccurrence((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTerminatorSymbol)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTerminatorSymbol::IfcTerminatorSymbol(IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name, IfcAnnotationCurveOccurrence* v4_AnnotatedCurve) : IfcAnnotationSymbolOccurrence((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)->generalize()); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } e->setArgument(3,(v4_AnnotatedCurve)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextLiteral
std::string IfcTextLiteral::Literal() const { return *data_->getArgument(0); }
void IfcTextLiteral::setLiteral(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcAxis2Placement* IfcTextLiteral::Placement() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcTextLiteral::setPlacement(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcTextPath::IfcTextPath IfcTextLiteral::Path() const { return IfcTextPath::FromString(*data_->getArgument(2)); }
void IfcTextLiteral::setPath(IfcTextPath::IfcTextPath v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcTextPath::ToString(v)); }


const IfcParse::entity& IfcTextLiteral::declaration() const { return *IfcTextLiteral_type; }
Type::Enum IfcTextLiteral::Class() { return Type::IfcTextLiteral; }
IfcTextLiteral::IfcTextLiteral(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextLiteral)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextLiteral::IfcTextLiteral(std::string v1_Literal, IfcAxis2Placement* v2_Placement, IfcTextPath::IfcTextPath v3_Path) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Literal)); e->setArgument(1,(v2_Placement)); e->setArgument(2,v3_Path,IfcTextPath::ToString(v3_Path)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextLiteralWithExtent
IfcPlanarExtent* IfcTextLiteralWithExtent::Extent() const { return (IfcPlanarExtent*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcTextLiteralWithExtent::setExtent(IfcPlanarExtent* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
std::string IfcTextLiteralWithExtent::BoxAlignment() const { return *data_->getArgument(4); }
void IfcTextLiteralWithExtent::setBoxAlignment(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcTextLiteralWithExtent::declaration() const { return *IfcTextLiteralWithExtent_type; }
Type::Enum IfcTextLiteralWithExtent::Class() { return Type::IfcTextLiteralWithExtent; }
IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(IfcAbstractEntity* e) : IfcTextLiteral((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextLiteralWithExtent)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(std::string v1_Literal, IfcAxis2Placement* v2_Placement, IfcTextPath::IfcTextPath v3_Path, IfcPlanarExtent* v4_Extent, std::string v5_BoxAlignment) : IfcTextLiteral((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Literal)); e->setArgument(1,(v2_Placement)); e->setArgument(2,v3_Path,IfcTextPath::ToString(v3_Path)); e->setArgument(3,(v4_Extent)); e->setArgument(4,(v5_BoxAlignment)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextStyle
bool IfcTextStyle::hasTextCharacterAppearance() const { return !data_->getArgument(1)->isNull(); }
IfcCharacterStyleSelect* IfcTextStyle::TextCharacterAppearance() const { return (IfcCharacterStyleSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcTextStyle::setTextCharacterAppearance(IfcCharacterStyleSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcTextStyle::hasTextStyle() const { return !data_->getArgument(2)->isNull(); }
IfcTextStyleSelect* IfcTextStyle::TextStyle() const { return (IfcTextStyleSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcTextStyle::setTextStyle(IfcTextStyleSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTextFontSelect* IfcTextStyle::TextFontStyle() const { return (IfcTextFontSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcTextStyle::setTextFontStyle(IfcTextFontSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcTextStyle::declaration() const { return *IfcTextStyle_type; }
Type::Enum IfcTextStyle::Class() { return Type::IfcTextStyle; }
IfcTextStyle::IfcTextStyle(IfcAbstractEntity* e) : IfcPresentationStyle((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, IfcCharacterStyleSelect* v2_TextCharacterAppearance, IfcTextStyleSelect* v3_TextStyle, IfcTextFontSelect* v4_TextFontStyle) : IfcPresentationStyle((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_TextCharacterAppearance)); e->setArgument(2,(v3_TextStyle)); e->setArgument(3,(v4_TextFontStyle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextStyleFontModel
bool IfcTextStyleFontModel::hasFontFamily() const { return !data_->getArgument(1)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcTextStyleFontModel::FontFamily() const { return *data_->getArgument(1); }
void IfcTextStyleFontModel::setFontFamily(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcTextStyleFontModel::hasFontStyle() const { return !data_->getArgument(2)->isNull(); }
std::string IfcTextStyleFontModel::FontStyle() const { return *data_->getArgument(2); }
void IfcTextStyleFontModel::setFontStyle(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcTextStyleFontModel::hasFontVariant() const { return !data_->getArgument(3)->isNull(); }
std::string IfcTextStyleFontModel::FontVariant() const { return *data_->getArgument(3); }
void IfcTextStyleFontModel::setFontVariant(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcTextStyleFontModel::hasFontWeight() const { return !data_->getArgument(4)->isNull(); }
std::string IfcTextStyleFontModel::FontWeight() const { return *data_->getArgument(4); }
void IfcTextStyleFontModel::setFontWeight(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcSizeSelect* IfcTextStyleFontModel::FontSize() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcTextStyleFontModel::setFontSize(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcTextStyleFontModel::declaration() const { return *IfcTextStyleFontModel_type; }
Type::Enum IfcTextStyleFontModel::Class() { return Type::IfcTextStyleFontModel; }
IfcTextStyleFontModel::IfcTextStyleFontModel(IfcAbstractEntity* e) : IfcPreDefinedTextFont((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextStyleFontModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextStyleFontModel::IfcTextStyleFontModel(std::string v1_Name, boost::optional< std::vector< std::string > /*[1:?]*/ > v2_FontFamily, boost::optional< std::string > v3_FontStyle, boost::optional< std::string > v4_FontVariant, boost::optional< std::string > v5_FontWeight, IfcSizeSelect* v6_FontSize) : IfcPreDefinedTextFont((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_FontFamily) { e->setArgument(1,(*v2_FontFamily)); } else { e->setArgument(1); } if (v3_FontStyle) { e->setArgument(2,(*v3_FontStyle)); } else { e->setArgument(2); } if (v4_FontVariant) { e->setArgument(3,(*v4_FontVariant)); } else { e->setArgument(3); } if (v5_FontWeight) { e->setArgument(4,(*v5_FontWeight)); } else { e->setArgument(4); } e->setArgument(5,(v6_FontSize)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextStyleForDefinedFont
IfcColour* IfcTextStyleForDefinedFont::Colour() const { return (IfcColour*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcTextStyleForDefinedFont::setColour(IfcColour* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcTextStyleForDefinedFont::hasBackgroundColour() const { return !data_->getArgument(1)->isNull(); }
IfcColour* IfcTextStyleForDefinedFont::BackgroundColour() const { return (IfcColour*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcTextStyleForDefinedFont::setBackgroundColour(IfcColour* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcTextStyleForDefinedFont::declaration() const { return *IfcTextStyleForDefinedFont_type; }
Type::Enum IfcTextStyleForDefinedFont::Class() { return Type::IfcTextStyleForDefinedFont; }
IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTextStyleForDefinedFont)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(IfcColour* v1_Colour, IfcColour* v2_BackgroundColour) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Colour)); e->setArgument(1,(v2_BackgroundColour)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextStyleTextModel
bool IfcTextStyleTextModel::hasTextIndent() const { return !data_->getArgument(0)->isNull(); }
IfcSizeSelect* IfcTextStyleTextModel::TextIndent() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcTextStyleTextModel::setTextIndent(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcTextStyleTextModel::hasTextAlign() const { return !data_->getArgument(1)->isNull(); }
std::string IfcTextStyleTextModel::TextAlign() const { return *data_->getArgument(1); }
void IfcTextStyleTextModel::setTextAlign(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcTextStyleTextModel::hasTextDecoration() const { return !data_->getArgument(2)->isNull(); }
std::string IfcTextStyleTextModel::TextDecoration() const { return *data_->getArgument(2); }
void IfcTextStyleTextModel::setTextDecoration(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcTextStyleTextModel::hasLetterSpacing() const { return !data_->getArgument(3)->isNull(); }
IfcSizeSelect* IfcTextStyleTextModel::LetterSpacing() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcTextStyleTextModel::setLetterSpacing(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcTextStyleTextModel::hasWordSpacing() const { return !data_->getArgument(4)->isNull(); }
IfcSizeSelect* IfcTextStyleTextModel::WordSpacing() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcTextStyleTextModel::setWordSpacing(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcTextStyleTextModel::hasTextTransform() const { return !data_->getArgument(5)->isNull(); }
std::string IfcTextStyleTextModel::TextTransform() const { return *data_->getArgument(5); }
void IfcTextStyleTextModel::setTextTransform(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcTextStyleTextModel::hasLineHeight() const { return !data_->getArgument(6)->isNull(); }
IfcSizeSelect* IfcTextStyleTextModel::LineHeight() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcTextStyleTextModel::setLineHeight(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcTextStyleTextModel::declaration() const { return *IfcTextStyleTextModel_type; }
Type::Enum IfcTextStyleTextModel::Class() { return Type::IfcTextStyleTextModel; }
IfcTextStyleTextModel::IfcTextStyleTextModel(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTextStyleTextModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextStyleTextModel::IfcTextStyleTextModel(IfcSizeSelect* v1_TextIndent, boost::optional< std::string > v2_TextAlign, boost::optional< std::string > v3_TextDecoration, IfcSizeSelect* v4_LetterSpacing, IfcSizeSelect* v5_WordSpacing, boost::optional< std::string > v6_TextTransform, IfcSizeSelect* v7_LineHeight) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TextIndent)); if (v2_TextAlign) { e->setArgument(1,(*v2_TextAlign)); } else { e->setArgument(1); } if (v3_TextDecoration) { e->setArgument(2,(*v3_TextDecoration)); } else { e->setArgument(2); } e->setArgument(3,(v4_LetterSpacing)); e->setArgument(4,(v5_WordSpacing)); if (v6_TextTransform) { e->setArgument(5,(*v6_TextTransform)); } else { e->setArgument(5); } e->setArgument(6,(v7_LineHeight)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextStyleWithBoxCharacteristics
bool IfcTextStyleWithBoxCharacteristics::hasBoxHeight() const { return !data_->getArgument(0)->isNull(); }
double IfcTextStyleWithBoxCharacteristics::BoxHeight() const { return *data_->getArgument(0); }
void IfcTextStyleWithBoxCharacteristics::setBoxHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcTextStyleWithBoxCharacteristics::hasBoxWidth() const { return !data_->getArgument(1)->isNull(); }
double IfcTextStyleWithBoxCharacteristics::BoxWidth() const { return *data_->getArgument(1); }
void IfcTextStyleWithBoxCharacteristics::setBoxWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcTextStyleWithBoxCharacteristics::hasBoxSlantAngle() const { return !data_->getArgument(2)->isNull(); }
double IfcTextStyleWithBoxCharacteristics::BoxSlantAngle() const { return *data_->getArgument(2); }
void IfcTextStyleWithBoxCharacteristics::setBoxSlantAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcTextStyleWithBoxCharacteristics::hasBoxRotateAngle() const { return !data_->getArgument(3)->isNull(); }
double IfcTextStyleWithBoxCharacteristics::BoxRotateAngle() const { return *data_->getArgument(3); }
void IfcTextStyleWithBoxCharacteristics::setBoxRotateAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcTextStyleWithBoxCharacteristics::hasCharacterSpacing() const { return !data_->getArgument(4)->isNull(); }
IfcSizeSelect* IfcTextStyleWithBoxCharacteristics::CharacterSpacing() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcTextStyleWithBoxCharacteristics::setCharacterSpacing(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcTextStyleWithBoxCharacteristics::declaration() const { return *IfcTextStyleWithBoxCharacteristics_type; }
Type::Enum IfcTextStyleWithBoxCharacteristics::Class() { return Type::IfcTextStyleWithBoxCharacteristics; }
IfcTextStyleWithBoxCharacteristics::IfcTextStyleWithBoxCharacteristics(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTextStyleWithBoxCharacteristics)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextStyleWithBoxCharacteristics::IfcTextStyleWithBoxCharacteristics(boost::optional< double > v1_BoxHeight, boost::optional< double > v2_BoxWidth, boost::optional< double > v3_BoxSlantAngle, boost::optional< double > v4_BoxRotateAngle, IfcSizeSelect* v5_CharacterSpacing) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_BoxHeight) { e->setArgument(0,(*v1_BoxHeight)); } else { e->setArgument(0); } if (v2_BoxWidth) { e->setArgument(1,(*v2_BoxWidth)); } else { e->setArgument(1); } if (v3_BoxSlantAngle) { e->setArgument(2,(*v3_BoxSlantAngle)); } else { e->setArgument(2); } if (v4_BoxRotateAngle) { e->setArgument(3,(*v4_BoxRotateAngle)); } else { e->setArgument(3); } e->setArgument(4,(v5_CharacterSpacing)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextureCoordinate

IfcAnnotationSurface::list::ptr IfcTextureCoordinate::AnnotatedSurface() const { return data_->getInverse(Type::IfcAnnotationSurface, 1)->as<IfcAnnotationSurface>(); }

const IfcParse::entity& IfcTextureCoordinate::declaration() const { return *IfcTextureCoordinate_type; }
Type::Enum IfcTextureCoordinate::Class() { return Type::IfcTextureCoordinate; }
IfcTextureCoordinate::IfcTextureCoordinate(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTextureCoordinate)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextureCoordinate::IfcTextureCoordinate() : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextureCoordinateGenerator
std::string IfcTextureCoordinateGenerator::Mode() const { return *data_->getArgument(0); }
void IfcTextureCoordinateGenerator::setMode(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcEntityList::ptr IfcTextureCoordinateGenerator::Parameter() const { return *data_->getArgument(1); }
void IfcTextureCoordinateGenerator::setParameter(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcTextureCoordinateGenerator::declaration() const { return *IfcTextureCoordinateGenerator_type; }
Type::Enum IfcTextureCoordinateGenerator::Class() { return Type::IfcTextureCoordinateGenerator; }
IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(IfcAbstractEntity* e) : IfcTextureCoordinate((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextureCoordinateGenerator)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(std::string v1_Mode, IfcEntityList::ptr v2_Parameter) : IfcTextureCoordinate((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Mode)); e->setArgument(1,(v2_Parameter)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextureMap
IfcTemplatedEntityList< IfcVertexBasedTextureMap >::ptr IfcTextureMap::TextureMaps() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcVertexBasedTextureMap>(); }
void IfcTextureMap::setTextureMaps(IfcTemplatedEntityList< IfcVertexBasedTextureMap >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }


const IfcParse::entity& IfcTextureMap::declaration() const { return *IfcTextureMap_type; }
Type::Enum IfcTextureMap::Class() { return Type::IfcTextureMap; }
IfcTextureMap::IfcTextureMap(IfcAbstractEntity* e) : IfcTextureCoordinate((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextureMap)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextureMap::IfcTextureMap(IfcTemplatedEntityList< IfcVertexBasedTextureMap >::ptr v1_TextureMaps) : IfcTextureCoordinate((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TextureMaps)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextureVertex
std::vector< double > /*[2:2]*/ IfcTextureVertex::Coordinates() const { return *data_->getArgument(0); }
void IfcTextureVertex::setCoordinates(std::vector< double > /*[2:2]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcTextureVertex::declaration() const { return *IfcTextureVertex_type; }
Type::Enum IfcTextureVertex::Class() { return Type::IfcTextureVertex; }
IfcTextureVertex::IfcTextureVertex(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTextureVertex)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextureVertex::IfcTextureVertex(std::vector< double > /*[2:2]*/ v1_Coordinates) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Coordinates)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcThermalMaterialProperties
bool IfcThermalMaterialProperties::hasSpecificHeatCapacity() const { return !data_->getArgument(1)->isNull(); }
double IfcThermalMaterialProperties::SpecificHeatCapacity() const { return *data_->getArgument(1); }
void IfcThermalMaterialProperties::setSpecificHeatCapacity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcThermalMaterialProperties::hasBoilingPoint() const { return !data_->getArgument(2)->isNull(); }
double IfcThermalMaterialProperties::BoilingPoint() const { return *data_->getArgument(2); }
void IfcThermalMaterialProperties::setBoilingPoint(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcThermalMaterialProperties::hasFreezingPoint() const { return !data_->getArgument(3)->isNull(); }
double IfcThermalMaterialProperties::FreezingPoint() const { return *data_->getArgument(3); }
void IfcThermalMaterialProperties::setFreezingPoint(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcThermalMaterialProperties::hasThermalConductivity() const { return !data_->getArgument(4)->isNull(); }
double IfcThermalMaterialProperties::ThermalConductivity() const { return *data_->getArgument(4); }
void IfcThermalMaterialProperties::setThermalConductivity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcThermalMaterialProperties::declaration() const { return *IfcThermalMaterialProperties_type; }
Type::Enum IfcThermalMaterialProperties::Class() { return Type::IfcThermalMaterialProperties; }
IfcThermalMaterialProperties::IfcThermalMaterialProperties(IfcAbstractEntity* e) : IfcMaterialProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcThermalMaterialProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcThermalMaterialProperties::IfcThermalMaterialProperties(IfcMaterial* v1_Material, boost::optional< double > v2_SpecificHeatCapacity, boost::optional< double > v3_BoilingPoint, boost::optional< double > v4_FreezingPoint, boost::optional< double > v5_ThermalConductivity) : IfcMaterialProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); if (v2_SpecificHeatCapacity) { e->setArgument(1,(*v2_SpecificHeatCapacity)); } else { e->setArgument(1); } if (v3_BoilingPoint) { e->setArgument(2,(*v3_BoilingPoint)); } else { e->setArgument(2); } if (v4_FreezingPoint) { e->setArgument(3,(*v4_FreezingPoint)); } else { e->setArgument(3); } if (v5_ThermalConductivity) { e->setArgument(4,(*v5_ThermalConductivity)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTimeSeries
std::string IfcTimeSeries::Name() const { return *data_->getArgument(0); }
void IfcTimeSeries::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcTimeSeries::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcTimeSeries::Description() const { return *data_->getArgument(1); }
void IfcTimeSeries::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcDateTimeSelect* IfcTimeSeries::StartTime() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcTimeSeries::setStartTime(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcDateTimeSelect* IfcTimeSeries::EndTime() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcTimeSeries::setEndTime(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum IfcTimeSeries::TimeSeriesDataType() const { return IfcTimeSeriesDataTypeEnum::FromString(*data_->getArgument(4)); }
void IfcTimeSeries::setTimeSeriesDataType(IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcTimeSeriesDataTypeEnum::ToString(v)); }
IfcDataOriginEnum::IfcDataOriginEnum IfcTimeSeries::DataOrigin() const { return IfcDataOriginEnum::FromString(*data_->getArgument(5)); }
void IfcTimeSeries::setDataOrigin(IfcDataOriginEnum::IfcDataOriginEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcDataOriginEnum::ToString(v)); }
bool IfcTimeSeries::hasUserDefinedDataOrigin() const { return !data_->getArgument(6)->isNull(); }
std::string IfcTimeSeries::UserDefinedDataOrigin() const { return *data_->getArgument(6); }
void IfcTimeSeries::setUserDefinedDataOrigin(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcTimeSeries::hasUnit() const { return !data_->getArgument(7)->isNull(); }
IfcUnit* IfcTimeSeries::Unit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcTimeSeries::setUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }

IfcTimeSeriesReferenceRelationship::list::ptr IfcTimeSeries::DocumentedBy() const { return data_->getInverse(Type::IfcTimeSeriesReferenceRelationship, 0)->as<IfcTimeSeriesReferenceRelationship>(); }

const IfcParse::entity& IfcTimeSeries::declaration() const { return *IfcTimeSeries_type; }
Type::Enum IfcTimeSeries::Class() { return Type::IfcTimeSeries; }
IfcTimeSeries::IfcTimeSeries(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTimeSeries)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTimeSeries::IfcTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, IfcDateTimeSelect* v3_StartTime, IfcDateTimeSelect* v4_EndTime, IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum v5_TimeSeriesDataType, IfcDataOriginEnum::IfcDataOriginEnum v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, IfcUnit* v8_Unit) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_StartTime)); e->setArgument(3,(v4_EndTime)); e->setArgument(4,v5_TimeSeriesDataType,IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType)); e->setArgument(5,v6_DataOrigin,IfcDataOriginEnum::ToString(v6_DataOrigin)); if (v7_UserDefinedDataOrigin) { e->setArgument(6,(*v7_UserDefinedDataOrigin)); } else { e->setArgument(6); } e->setArgument(7,(v8_Unit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTimeSeriesReferenceRelationship
IfcTimeSeries* IfcTimeSeriesReferenceRelationship::ReferencedTimeSeries() const { return (IfcTimeSeries*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcTimeSeriesReferenceRelationship::setReferencedTimeSeries(IfcTimeSeries* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcEntityList::ptr IfcTimeSeriesReferenceRelationship::TimeSeriesReferences() const { return *data_->getArgument(1); }
void IfcTimeSeriesReferenceRelationship::setTimeSeriesReferences(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcTimeSeriesReferenceRelationship::declaration() const { return *IfcTimeSeriesReferenceRelationship_type; }
Type::Enum IfcTimeSeriesReferenceRelationship::Class() { return Type::IfcTimeSeriesReferenceRelationship; }
IfcTimeSeriesReferenceRelationship::IfcTimeSeriesReferenceRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTimeSeriesReferenceRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTimeSeriesReferenceRelationship::IfcTimeSeriesReferenceRelationship(IfcTimeSeries* v1_ReferencedTimeSeries, IfcEntityList::ptr v2_TimeSeriesReferences) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ReferencedTimeSeries)); e->setArgument(1,(v2_TimeSeriesReferences)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTimeSeriesSchedule
bool IfcTimeSeriesSchedule::hasApplicableDates() const { return !data_->getArgument(5)->isNull(); }
IfcEntityList::ptr IfcTimeSeriesSchedule::ApplicableDates() const { return *data_->getArgument(5); }
void IfcTimeSeriesSchedule::setApplicableDates(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleTypeEnum IfcTimeSeriesSchedule::TimeSeriesScheduleType() const { return IfcTimeSeriesScheduleTypeEnum::FromString(*data_->getArgument(6)); }
void IfcTimeSeriesSchedule::setTimeSeriesScheduleType(IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcTimeSeriesScheduleTypeEnum::ToString(v)); }
IfcTimeSeries* IfcTimeSeriesSchedule::TimeSeries() const { return (IfcTimeSeries*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcTimeSeriesSchedule::setTimeSeries(IfcTimeSeries* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcTimeSeriesSchedule::declaration() const { return *IfcTimeSeriesSchedule_type; }
Type::Enum IfcTimeSeriesSchedule::Class() { return Type::IfcTimeSeriesSchedule; }
IfcTimeSeriesSchedule::IfcTimeSeriesSchedule(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTimeSeriesSchedule)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTimeSeriesSchedule::IfcTimeSeriesSchedule(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< IfcEntityList::ptr > v6_ApplicableDates, IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleTypeEnum v7_TimeSeriesScheduleType, IfcTimeSeries* v8_TimeSeries) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_ApplicableDates) { e->setArgument(5,(*v6_ApplicableDates)); } else { e->setArgument(5); } e->setArgument(6,v7_TimeSeriesScheduleType,IfcTimeSeriesScheduleTypeEnum::ToString(v7_TimeSeriesScheduleType)); e->setArgument(7,(v8_TimeSeries)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTimeSeriesValue
IfcEntityList::ptr IfcTimeSeriesValue::ListValues() const { return *data_->getArgument(0); }
void IfcTimeSeriesValue::setListValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcTimeSeriesValue::declaration() const { return *IfcTimeSeriesValue_type; }
Type::Enum IfcTimeSeriesValue::Class() { return Type::IfcTimeSeriesValue; }
IfcTimeSeriesValue::IfcTimeSeriesValue(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTimeSeriesValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTimeSeriesValue::IfcTimeSeriesValue(IfcEntityList::ptr v1_ListValues) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ListValues)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTopologicalRepresentationItem


const IfcParse::entity& IfcTopologicalRepresentationItem::declaration() const { return *IfcTopologicalRepresentationItem_type; }
Type::Enum IfcTopologicalRepresentationItem::Class() { return Type::IfcTopologicalRepresentationItem; }
IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem(IfcAbstractEntity* e) : IfcRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTopologicalRepresentationItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem() : IfcRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTopologyRepresentation


const IfcParse::entity& IfcTopologyRepresentation::declaration() const { return *IfcTopologyRepresentation_type; }
Type::Enum IfcTopologyRepresentation::Class() { return Type::IfcTopologyRepresentation; }
IfcTopologyRepresentation::IfcTopologyRepresentation(IfcAbstractEntity* e) : IfcShapeModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTopologyRepresentation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTopologyRepresentation::IfcTopologyRepresentation(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcShapeModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTransformerType
IfcTransformerTypeEnum::IfcTransformerTypeEnum IfcTransformerType::PredefinedType() const { return IfcTransformerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTransformerType::setPredefinedType(IfcTransformerTypeEnum::IfcTransformerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTransformerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTransformerType::declaration() const { return *IfcTransformerType_type; }
Type::Enum IfcTransformerType::Class() { return Type::IfcTransformerType; }
IfcTransformerType::IfcTransformerType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTransformerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcTransformerTypeEnum::IfcTransformerTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTransformerTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTransportElement
bool IfcTransportElement::hasOperationType() const { return !data_->getArgument(8)->isNull(); }
IfcTransportElementTypeEnum::IfcTransportElementTypeEnum IfcTransportElement::OperationType() const { return IfcTransportElementTypeEnum::FromString(*data_->getArgument(8)); }
void IfcTransportElement::setOperationType(IfcTransportElementTypeEnum::IfcTransportElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcTransportElementTypeEnum::ToString(v)); }
bool IfcTransportElement::hasCapacityByWeight() const { return !data_->getArgument(9)->isNull(); }
double IfcTransportElement::CapacityByWeight() const { return *data_->getArgument(9); }
void IfcTransportElement::setCapacityByWeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcTransportElement::hasCapacityByNumber() const { return !data_->getArgument(10)->isNull(); }
double IfcTransportElement::CapacityByNumber() const { return *data_->getArgument(10); }
void IfcTransportElement::setCapacityByNumber(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcTransportElement::declaration() const { return *IfcTransportElement_type; }
Type::Enum IfcTransportElement::Class() { return Type::IfcTransportElement; }
IfcTransportElement::IfcTransportElement(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTransportElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTransportElement::IfcTransportElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcTransportElementTypeEnum::IfcTransportElementTypeEnum > v9_OperationType, boost::optional< double > v10_CapacityByWeight, boost::optional< double > v11_CapacityByNumber) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_OperationType) { e->setArgument(8,*v9_OperationType,IfcTransportElementTypeEnum::ToString(*v9_OperationType)); } else { e->setArgument(8); } if (v10_CapacityByWeight) { e->setArgument(9,(*v10_CapacityByWeight)); } else { e->setArgument(9); } if (v11_CapacityByNumber) { e->setArgument(10,(*v11_CapacityByNumber)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTransportElementType
IfcTransportElementTypeEnum::IfcTransportElementTypeEnum IfcTransportElementType::PredefinedType() const { return IfcTransportElementTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTransportElementType::setPredefinedType(IfcTransportElementTypeEnum::IfcTransportElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTransportElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTransportElementType::declaration() const { return *IfcTransportElementType_type; }
Type::Enum IfcTransportElementType::Class() { return Type::IfcTransportElementType; }
IfcTransportElementType::IfcTransportElementType(IfcAbstractEntity* e) : IfcElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTransportElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTransportElementType::IfcTransportElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcTransportElementTypeEnum::IfcTransportElementTypeEnum v10_PredefinedType) : IfcElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTransportElementTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTrapeziumProfileDef
double IfcTrapeziumProfileDef::BottomXDim() const { return *data_->getArgument(3); }
void IfcTrapeziumProfileDef::setBottomXDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcTrapeziumProfileDef::TopXDim() const { return *data_->getArgument(4); }
void IfcTrapeziumProfileDef::setTopXDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcTrapeziumProfileDef::YDim() const { return *data_->getArgument(5); }
void IfcTrapeziumProfileDef::setYDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcTrapeziumProfileDef::TopXOffset() const { return *data_->getArgument(6); }
void IfcTrapeziumProfileDef::setTopXOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcTrapeziumProfileDef::declaration() const { return *IfcTrapeziumProfileDef_type; }
Type::Enum IfcTrapeziumProfileDef::Class() { return Type::IfcTrapeziumProfileDef; }
IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTrapeziumProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_BottomXDim, double v5_TopXDim, double v6_YDim, double v7_TopXOffset) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_BottomXDim)); e->setArgument(4,(v5_TopXDim)); e->setArgument(5,(v6_YDim)); e->setArgument(6,(v7_TopXOffset)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTrimmedCurve
IfcCurve* IfcTrimmedCurve::BasisCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcTrimmedCurve::setBasisCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcEntityList::ptr IfcTrimmedCurve::Trim1() const { return *data_->getArgument(1); }
void IfcTrimmedCurve::setTrim1(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcEntityList::ptr IfcTrimmedCurve::Trim2() const { return *data_->getArgument(2); }
void IfcTrimmedCurve::setTrim2(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcTrimmedCurve::SenseAgreement() const { return *data_->getArgument(3); }
void IfcTrimmedCurve::setSenseAgreement(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
IfcTrimmingPreference::IfcTrimmingPreference IfcTrimmedCurve::MasterRepresentation() const { return IfcTrimmingPreference::FromString(*data_->getArgument(4)); }
void IfcTrimmedCurve::setMasterRepresentation(IfcTrimmingPreference::IfcTrimmingPreference v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcTrimmingPreference::ToString(v)); }


const IfcParse::entity& IfcTrimmedCurve::declaration() const { return *IfcTrimmedCurve_type; }
Type::Enum IfcTrimmedCurve::Class() { return Type::IfcTrimmedCurve; }
IfcTrimmedCurve::IfcTrimmedCurve(IfcAbstractEntity* e) : IfcBoundedCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTrimmedCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTrimmedCurve::IfcTrimmedCurve(IfcCurve* v1_BasisCurve, IfcEntityList::ptr v2_Trim1, IfcEntityList::ptr v3_Trim2, bool v4_SenseAgreement, IfcTrimmingPreference::IfcTrimmingPreference v5_MasterRepresentation) : IfcBoundedCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisCurve)); e->setArgument(1,(v2_Trim1)); e->setArgument(2,(v3_Trim2)); e->setArgument(3,(v4_SenseAgreement)); e->setArgument(4,v5_MasterRepresentation,IfcTrimmingPreference::ToString(v5_MasterRepresentation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTubeBundleType
IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum IfcTubeBundleType::PredefinedType() const { return IfcTubeBundleTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTubeBundleType::setPredefinedType(IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTubeBundleTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTubeBundleType::declaration() const { return *IfcTubeBundleType_type; }
Type::Enum IfcTubeBundleType::Class() { return Type::IfcTubeBundleType; }
IfcTubeBundleType::IfcTubeBundleType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTubeBundleType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTubeBundleTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTwoDirectionRepeatFactor
IfcVector* IfcTwoDirectionRepeatFactor::SecondRepeatFactor() const { return (IfcVector*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcTwoDirectionRepeatFactor::setSecondRepeatFactor(IfcVector* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcTwoDirectionRepeatFactor::declaration() const { return *IfcTwoDirectionRepeatFactor_type; }
Type::Enum IfcTwoDirectionRepeatFactor::Class() { return Type::IfcTwoDirectionRepeatFactor; }
IfcTwoDirectionRepeatFactor::IfcTwoDirectionRepeatFactor(IfcAbstractEntity* e) : IfcOneDirectionRepeatFactor((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTwoDirectionRepeatFactor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTwoDirectionRepeatFactor::IfcTwoDirectionRepeatFactor(IfcVector* v1_RepeatFactor, IfcVector* v2_SecondRepeatFactor) : IfcOneDirectionRepeatFactor((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RepeatFactor)); e->setArgument(1,(v2_SecondRepeatFactor)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTypeObject
bool IfcTypeObject::hasApplicableOccurrence() const { return !data_->getArgument(4)->isNull(); }
std::string IfcTypeObject::ApplicableOccurrence() const { return *data_->getArgument(4); }
void IfcTypeObject::setApplicableOccurrence(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcTypeObject::hasHasPropertySets() const { return !data_->getArgument(5)->isNull(); }
IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr IfcTypeObject::HasPropertySets() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcPropertySetDefinition>(); }
void IfcTypeObject::setHasPropertySets(IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }

IfcRelDefinesByType::list::ptr IfcTypeObject::ObjectTypeOf() const { return data_->getInverse(Type::IfcRelDefinesByType, 5)->as<IfcRelDefinesByType>(); }

const IfcParse::entity& IfcTypeObject::declaration() const { return *IfcTypeObject_type; }
Type::Enum IfcTypeObject::Class() { return Type::IfcTypeObject; }
IfcTypeObject::IfcTypeObject(IfcAbstractEntity* e) : IfcObjectDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTypeObject)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets) : IfcObjectDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTypeProduct
bool IfcTypeProduct::hasRepresentationMaps() const { return !data_->getArgument(6)->isNull(); }
IfcTemplatedEntityList< IfcRepresentationMap >::ptr IfcTypeProduct::RepresentationMaps() const { IfcEntityList::ptr es = *data_->getArgument(6); return es->as<IfcRepresentationMap>(); }
void IfcTypeProduct::setRepresentationMaps(IfcTemplatedEntityList< IfcRepresentationMap >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v->generalize()); }
bool IfcTypeProduct::hasTag() const { return !data_->getArgument(7)->isNull(); }
std::string IfcTypeProduct::Tag() const { return *data_->getArgument(7); }
void IfcTypeProduct::setTag(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcTypeProduct::declaration() const { return *IfcTypeProduct_type; }
Type::Enum IfcTypeProduct::Class() { return Type::IfcTypeProduct; }
IfcTypeProduct::IfcTypeProduct(IfcAbstractEntity* e) : IfcTypeObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTypeProduct)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag) : IfcTypeObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcUShapeProfileDef
double IfcUShapeProfileDef::Depth() const { return *data_->getArgument(3); }
void IfcUShapeProfileDef::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcUShapeProfileDef::FlangeWidth() const { return *data_->getArgument(4); }
void IfcUShapeProfileDef::setFlangeWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcUShapeProfileDef::WebThickness() const { return *data_->getArgument(5); }
void IfcUShapeProfileDef::setWebThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcUShapeProfileDef::FlangeThickness() const { return *data_->getArgument(6); }
void IfcUShapeProfileDef::setFlangeThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcUShapeProfileDef::hasFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcUShapeProfileDef::FilletRadius() const { return *data_->getArgument(7); }
void IfcUShapeProfileDef::setFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcUShapeProfileDef::hasEdgeRadius() const { return !data_->getArgument(8)->isNull(); }
double IfcUShapeProfileDef::EdgeRadius() const { return *data_->getArgument(8); }
void IfcUShapeProfileDef::setEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcUShapeProfileDef::hasFlangeSlope() const { return !data_->getArgument(9)->isNull(); }
double IfcUShapeProfileDef::FlangeSlope() const { return *data_->getArgument(9); }
void IfcUShapeProfileDef::setFlangeSlope(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcUShapeProfileDef::hasCentreOfGravityInX() const { return !data_->getArgument(10)->isNull(); }
double IfcUShapeProfileDef::CentreOfGravityInX() const { return *data_->getArgument(10); }
void IfcUShapeProfileDef::setCentreOfGravityInX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcUShapeProfileDef::declaration() const { return *IfcUShapeProfileDef_type; }
Type::Enum IfcUShapeProfileDef::Class() { return Type::IfcUShapeProfileDef; }
IfcUShapeProfileDef::IfcUShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcUShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcUShapeProfileDef::IfcUShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_EdgeRadius, boost::optional< double > v10_FlangeSlope, boost::optional< double > v11_CentreOfGravityInX) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_Depth)); e->setArgument(4,(v5_FlangeWidth)); e->setArgument(5,(v6_WebThickness)); e->setArgument(6,(v7_FlangeThickness)); if (v8_FilletRadius) { e->setArgument(7,(*v8_FilletRadius)); } else { e->setArgument(7); } if (v9_EdgeRadius) { e->setArgument(8,(*v9_EdgeRadius)); } else { e->setArgument(8); } if (v10_FlangeSlope) { e->setArgument(9,(*v10_FlangeSlope)); } else { e->setArgument(9); } if (v11_CentreOfGravityInX) { e->setArgument(10,(*v11_CentreOfGravityInX)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcUnitAssignment
IfcEntityList::ptr IfcUnitAssignment::Units() const { return *data_->getArgument(0); }
void IfcUnitAssignment::setUnits(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcUnitAssignment::declaration() const { return *IfcUnitAssignment_type; }
Type::Enum IfcUnitAssignment::Class() { return Type::IfcUnitAssignment; }
IfcUnitAssignment::IfcUnitAssignment(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcUnitAssignment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcUnitAssignment::IfcUnitAssignment(IfcEntityList::ptr v1_Units) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Units)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcUnitaryEquipmentType
IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum IfcUnitaryEquipmentType::PredefinedType() const { return IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(9)); }
void IfcUnitaryEquipmentType::setPredefinedType(IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcUnitaryEquipmentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcUnitaryEquipmentType::declaration() const { return *IfcUnitaryEquipmentType_type; }
Type::Enum IfcUnitaryEquipmentType::Class() { return Type::IfcUnitaryEquipmentType; }
IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcUnitaryEquipmentType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcUnitaryEquipmentTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcValveType
IfcValveTypeEnum::IfcValveTypeEnum IfcValveType::PredefinedType() const { return IfcValveTypeEnum::FromString(*data_->getArgument(9)); }
void IfcValveType::setPredefinedType(IfcValveTypeEnum::IfcValveTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcValveTypeEnum::ToString(v)); }


const IfcParse::entity& IfcValveType::declaration() const { return *IfcValveType_type; }
Type::Enum IfcValveType::Class() { return Type::IfcValveType; }
IfcValveType::IfcValveType(IfcAbstractEntity* e) : IfcFlowControllerType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcValveType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcValveType::IfcValveType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcValveTypeEnum::IfcValveTypeEnum v10_PredefinedType) : IfcFlowControllerType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcValveTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVector
IfcDirection* IfcVector::Orientation() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcVector::setOrientation(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcVector::Magnitude() const { return *data_->getArgument(1); }
void IfcVector::setMagnitude(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcVector::declaration() const { return *IfcVector_type; }
Type::Enum IfcVector::Class() { return Type::IfcVector; }
IfcVector::IfcVector(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVector)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVector::IfcVector(IfcDirection* v1_Orientation, double v2_Magnitude) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Orientation)); e->setArgument(1,(v2_Magnitude)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVertex


const IfcParse::entity& IfcVertex::declaration() const { return *IfcVertex_type; }
Type::Enum IfcVertex::Class() { return Type::IfcVertex; }
IfcVertex::IfcVertex(IfcAbstractEntity* e) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVertex)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVertex::IfcVertex() : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVertexBasedTextureMap
IfcTemplatedEntityList< IfcTextureVertex >::ptr IfcVertexBasedTextureMap::TextureVertices() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcTextureVertex>(); }
void IfcVertexBasedTextureMap::setTextureVertices(IfcTemplatedEntityList< IfcTextureVertex >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
IfcTemplatedEntityList< IfcCartesianPoint >::ptr IfcVertexBasedTextureMap::TexturePoints() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcCartesianPoint>(); }
void IfcVertexBasedTextureMap::setTexturePoints(IfcTemplatedEntityList< IfcCartesianPoint >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }


const IfcParse::entity& IfcVertexBasedTextureMap::declaration() const { return *IfcVertexBasedTextureMap_type; }
Type::Enum IfcVertexBasedTextureMap::Class() { return Type::IfcVertexBasedTextureMap; }
IfcVertexBasedTextureMap::IfcVertexBasedTextureMap(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcVertexBasedTextureMap)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVertexBasedTextureMap::IfcVertexBasedTextureMap(IfcTemplatedEntityList< IfcTextureVertex >::ptr v1_TextureVertices, IfcTemplatedEntityList< IfcCartesianPoint >::ptr v2_TexturePoints) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TextureVertices)->generalize()); e->setArgument(1,(v2_TexturePoints)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVertexLoop
IfcVertex* IfcVertexLoop::LoopVertex() const { return (IfcVertex*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcVertexLoop::setLoopVertex(IfcVertex* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcVertexLoop::declaration() const { return *IfcVertexLoop_type; }
Type::Enum IfcVertexLoop::Class() { return Type::IfcVertexLoop; }
IfcVertexLoop::IfcVertexLoop(IfcAbstractEntity* e) : IfcLoop((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVertexLoop)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVertexLoop::IfcVertexLoop(IfcVertex* v1_LoopVertex) : IfcLoop((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_LoopVertex)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVertexPoint
IfcPoint* IfcVertexPoint::VertexGeometry() const { return (IfcPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcVertexPoint::setVertexGeometry(IfcPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcVertexPoint::declaration() const { return *IfcVertexPoint_type; }
Type::Enum IfcVertexPoint::Class() { return Type::IfcVertexPoint; }
IfcVertexPoint::IfcVertexPoint(IfcAbstractEntity* e) : IfcVertex((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVertexPoint)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVertexPoint::IfcVertexPoint(IfcPoint* v1_VertexGeometry) : IfcVertex((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_VertexGeometry)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVibrationIsolatorType
IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum IfcVibrationIsolatorType::PredefinedType() const { return IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcVibrationIsolatorType::setPredefinedType(IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcVibrationIsolatorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcVibrationIsolatorType::declaration() const { return *IfcVibrationIsolatorType_type; }
Type::Enum IfcVibrationIsolatorType::Class() { return Type::IfcVibrationIsolatorType; }
IfcVibrationIsolatorType::IfcVibrationIsolatorType(IfcAbstractEntity* e) : IfcDiscreteAccessoryType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVibrationIsolatorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVibrationIsolatorType::IfcVibrationIsolatorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum v10_PredefinedType) : IfcDiscreteAccessoryType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcVibrationIsolatorTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVirtualElement


const IfcParse::entity& IfcVirtualElement::declaration() const { return *IfcVirtualElement_type; }
Type::Enum IfcVirtualElement::Class() { return Type::IfcVirtualElement; }
IfcVirtualElement::IfcVirtualElement(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVirtualElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVirtualElement::IfcVirtualElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVirtualGridIntersection
IfcTemplatedEntityList< IfcGridAxis >::ptr IfcVirtualGridIntersection::IntersectingAxes() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcGridAxis>(); }
void IfcVirtualGridIntersection::setIntersectingAxes(IfcTemplatedEntityList< IfcGridAxis >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
std::vector< double > /*[2:3]*/ IfcVirtualGridIntersection::OffsetDistances() const { return *data_->getArgument(1); }
void IfcVirtualGridIntersection::setOffsetDistances(std::vector< double > /*[2:3]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcVirtualGridIntersection::declaration() const { return *IfcVirtualGridIntersection_type; }
Type::Enum IfcVirtualGridIntersection::Class() { return Type::IfcVirtualGridIntersection; }
IfcVirtualGridIntersection::IfcVirtualGridIntersection(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcVirtualGridIntersection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVirtualGridIntersection::IfcVirtualGridIntersection(IfcTemplatedEntityList< IfcGridAxis >::ptr v1_IntersectingAxes, std::vector< double > /*[2:3]*/ v2_OffsetDistances) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_IntersectingAxes)->generalize()); e->setArgument(1,(v2_OffsetDistances)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWall


const IfcParse::entity& IfcWall::declaration() const { return *IfcWall_type; }
Type::Enum IfcWall::Class() { return Type::IfcWall; }
IfcWall::IfcWall(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWall)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWall::IfcWall(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWallStandardCase


const IfcParse::entity& IfcWallStandardCase::declaration() const { return *IfcWallStandardCase_type; }
Type::Enum IfcWallStandardCase::Class() { return Type::IfcWallStandardCase; }
IfcWallStandardCase::IfcWallStandardCase(IfcAbstractEntity* e) : IfcWall((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWallStandardCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWallStandardCase::IfcWallStandardCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcWall((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWallType
IfcWallTypeEnum::IfcWallTypeEnum IfcWallType::PredefinedType() const { return IfcWallTypeEnum::FromString(*data_->getArgument(9)); }
void IfcWallType::setPredefinedType(IfcWallTypeEnum::IfcWallTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcWallTypeEnum::ToString(v)); }


const IfcParse::entity& IfcWallType::declaration() const { return *IfcWallType_type; }
Type::Enum IfcWallType::Class() { return Type::IfcWallType; }
IfcWallType::IfcWallType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWallType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWallType::IfcWallType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcWallTypeEnum::IfcWallTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcWallTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWasteTerminalType
IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum IfcWasteTerminalType::PredefinedType() const { return IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void IfcWasteTerminalType::setPredefinedType(IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcWasteTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcWasteTerminalType::declaration() const { return *IfcWasteTerminalType_type; }
Type::Enum IfcWasteTerminalType::Class() { return Type::IfcWasteTerminalType; }
IfcWasteTerminalType::IfcWasteTerminalType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWasteTerminalType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWasteTerminalType::IfcWasteTerminalType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcWasteTerminalTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWaterProperties
bool IfcWaterProperties::hasIsPotable() const { return !data_->getArgument(1)->isNull(); }
bool IfcWaterProperties::IsPotable() const { return *data_->getArgument(1); }
void IfcWaterProperties::setIsPotable(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcWaterProperties::hasHardness() const { return !data_->getArgument(2)->isNull(); }
double IfcWaterProperties::Hardness() const { return *data_->getArgument(2); }
void IfcWaterProperties::setHardness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcWaterProperties::hasAlkalinityConcentration() const { return !data_->getArgument(3)->isNull(); }
double IfcWaterProperties::AlkalinityConcentration() const { return *data_->getArgument(3); }
void IfcWaterProperties::setAlkalinityConcentration(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcWaterProperties::hasAcidityConcentration() const { return !data_->getArgument(4)->isNull(); }
double IfcWaterProperties::AcidityConcentration() const { return *data_->getArgument(4); }
void IfcWaterProperties::setAcidityConcentration(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcWaterProperties::hasImpuritiesContent() const { return !data_->getArgument(5)->isNull(); }
double IfcWaterProperties::ImpuritiesContent() const { return *data_->getArgument(5); }
void IfcWaterProperties::setImpuritiesContent(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcWaterProperties::hasPHLevel() const { return !data_->getArgument(6)->isNull(); }
double IfcWaterProperties::PHLevel() const { return *data_->getArgument(6); }
void IfcWaterProperties::setPHLevel(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcWaterProperties::hasDissolvedSolidsContent() const { return !data_->getArgument(7)->isNull(); }
double IfcWaterProperties::DissolvedSolidsContent() const { return *data_->getArgument(7); }
void IfcWaterProperties::setDissolvedSolidsContent(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcWaterProperties::declaration() const { return *IfcWaterProperties_type; }
Type::Enum IfcWaterProperties::Class() { return Type::IfcWaterProperties; }
IfcWaterProperties::IfcWaterProperties(IfcAbstractEntity* e) : IfcMaterialProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWaterProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWaterProperties::IfcWaterProperties(IfcMaterial* v1_Material, boost::optional< bool > v2_IsPotable, boost::optional< double > v3_Hardness, boost::optional< double > v4_AlkalinityConcentration, boost::optional< double > v5_AcidityConcentration, boost::optional< double > v6_ImpuritiesContent, boost::optional< double > v7_PHLevel, boost::optional< double > v8_DissolvedSolidsContent) : IfcMaterialProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); if (v2_IsPotable) { e->setArgument(1,(*v2_IsPotable)); } else { e->setArgument(1); } if (v3_Hardness) { e->setArgument(2,(*v3_Hardness)); } else { e->setArgument(2); } if (v4_AlkalinityConcentration) { e->setArgument(3,(*v4_AlkalinityConcentration)); } else { e->setArgument(3); } if (v5_AcidityConcentration) { e->setArgument(4,(*v5_AcidityConcentration)); } else { e->setArgument(4); } if (v6_ImpuritiesContent) { e->setArgument(5,(*v6_ImpuritiesContent)); } else { e->setArgument(5); } if (v7_PHLevel) { e->setArgument(6,(*v7_PHLevel)); } else { e->setArgument(6); } if (v8_DissolvedSolidsContent) { e->setArgument(7,(*v8_DissolvedSolidsContent)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWindow
bool IfcWindow::hasOverallHeight() const { return !data_->getArgument(8)->isNull(); }
double IfcWindow::OverallHeight() const { return *data_->getArgument(8); }
void IfcWindow::setOverallHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcWindow::hasOverallWidth() const { return !data_->getArgument(9)->isNull(); }
double IfcWindow::OverallWidth() const { return *data_->getArgument(9); }
void IfcWindow::setOverallWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcWindow::declaration() const { return *IfcWindow_type; }
Type::Enum IfcWindow::Class() { return Type::IfcWindow; }
IfcWindow::IfcWindow(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWindow)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWindow::IfcWindow(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_OverallHeight) { e->setArgument(8,(*v9_OverallHeight)); } else { e->setArgument(8); } if (v10_OverallWidth) { e->setArgument(9,(*v10_OverallWidth)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWindowLiningProperties
bool IfcWindowLiningProperties::hasLiningDepth() const { return !data_->getArgument(4)->isNull(); }
double IfcWindowLiningProperties::LiningDepth() const { return *data_->getArgument(4); }
void IfcWindowLiningProperties::setLiningDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcWindowLiningProperties::hasLiningThickness() const { return !data_->getArgument(5)->isNull(); }
double IfcWindowLiningProperties::LiningThickness() const { return *data_->getArgument(5); }
void IfcWindowLiningProperties::setLiningThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcWindowLiningProperties::hasTransomThickness() const { return !data_->getArgument(6)->isNull(); }
double IfcWindowLiningProperties::TransomThickness() const { return *data_->getArgument(6); }
void IfcWindowLiningProperties::setTransomThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcWindowLiningProperties::hasMullionThickness() const { return !data_->getArgument(7)->isNull(); }
double IfcWindowLiningProperties::MullionThickness() const { return *data_->getArgument(7); }
void IfcWindowLiningProperties::setMullionThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcWindowLiningProperties::hasFirstTransomOffset() const { return !data_->getArgument(8)->isNull(); }
double IfcWindowLiningProperties::FirstTransomOffset() const { return *data_->getArgument(8); }
void IfcWindowLiningProperties::setFirstTransomOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcWindowLiningProperties::hasSecondTransomOffset() const { return !data_->getArgument(9)->isNull(); }
double IfcWindowLiningProperties::SecondTransomOffset() const { return *data_->getArgument(9); }
void IfcWindowLiningProperties::setSecondTransomOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcWindowLiningProperties::hasFirstMullionOffset() const { return !data_->getArgument(10)->isNull(); }
double IfcWindowLiningProperties::FirstMullionOffset() const { return *data_->getArgument(10); }
void IfcWindowLiningProperties::setFirstMullionOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcWindowLiningProperties::hasSecondMullionOffset() const { return !data_->getArgument(11)->isNull(); }
double IfcWindowLiningProperties::SecondMullionOffset() const { return *data_->getArgument(11); }
void IfcWindowLiningProperties::setSecondMullionOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcWindowLiningProperties::hasShapeAspectStyle() const { return !data_->getArgument(12)->isNull(); }
IfcShapeAspect* IfcWindowLiningProperties::ShapeAspectStyle() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(12))); }
void IfcWindowLiningProperties::setShapeAspectStyle(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcWindowLiningProperties::declaration() const { return *IfcWindowLiningProperties_type; }
Type::Enum IfcWindowLiningProperties::Class() { return Type::IfcWindowLiningProperties; }
IfcWindowLiningProperties::IfcWindowLiningProperties(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWindowLiningProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWindowLiningProperties::IfcWindowLiningProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_LiningDepth, boost::optional< double > v6_LiningThickness, boost::optional< double > v7_TransomThickness, boost::optional< double > v8_MullionThickness, boost::optional< double > v9_FirstTransomOffset, boost::optional< double > v10_SecondTransomOffset, boost::optional< double > v11_FirstMullionOffset, boost::optional< double > v12_SecondMullionOffset, IfcShapeAspect* v13_ShapeAspectStyle) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_LiningDepth) { e->setArgument(4,(*v5_LiningDepth)); } else { e->setArgument(4); } if (v6_LiningThickness) { e->setArgument(5,(*v6_LiningThickness)); } else { e->setArgument(5); } if (v7_TransomThickness) { e->setArgument(6,(*v7_TransomThickness)); } else { e->setArgument(6); } if (v8_MullionThickness) { e->setArgument(7,(*v8_MullionThickness)); } else { e->setArgument(7); } if (v9_FirstTransomOffset) { e->setArgument(8,(*v9_FirstTransomOffset)); } else { e->setArgument(8); } if (v10_SecondTransomOffset) { e->setArgument(9,(*v10_SecondTransomOffset)); } else { e->setArgument(9); } if (v11_FirstMullionOffset) { e->setArgument(10,(*v11_FirstMullionOffset)); } else { e->setArgument(10); } if (v12_SecondMullionOffset) { e->setArgument(11,(*v12_SecondMullionOffset)); } else { e->setArgument(11); } e->setArgument(12,(v13_ShapeAspectStyle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWindowPanelProperties
IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum IfcWindowPanelProperties::OperationType() const { return IfcWindowPanelOperationEnum::FromString(*data_->getArgument(4)); }
void IfcWindowPanelProperties::setOperationType(IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcWindowPanelOperationEnum::ToString(v)); }
IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum IfcWindowPanelProperties::PanelPosition() const { return IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); }
void IfcWindowPanelProperties::setPanelPosition(IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcWindowPanelPositionEnum::ToString(v)); }
bool IfcWindowPanelProperties::hasFrameDepth() const { return !data_->getArgument(6)->isNull(); }
double IfcWindowPanelProperties::FrameDepth() const { return *data_->getArgument(6); }
void IfcWindowPanelProperties::setFrameDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcWindowPanelProperties::hasFrameThickness() const { return !data_->getArgument(7)->isNull(); }
double IfcWindowPanelProperties::FrameThickness() const { return *data_->getArgument(7); }
void IfcWindowPanelProperties::setFrameThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcWindowPanelProperties::hasShapeAspectStyle() const { return !data_->getArgument(8)->isNull(); }
IfcShapeAspect* IfcWindowPanelProperties::ShapeAspectStyle() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcWindowPanelProperties::setShapeAspectStyle(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcWindowPanelProperties::declaration() const { return *IfcWindowPanelProperties_type; }
Type::Enum IfcWindowPanelProperties::Class() { return Type::IfcWindowPanelProperties; }
IfcWindowPanelProperties::IfcWindowPanelProperties(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWindowPanelProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWindowPanelProperties::IfcWindowPanelProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum v5_OperationType, IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, IfcShapeAspect* v9_ShapeAspectStyle) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,v5_OperationType,IfcWindowPanelOperationEnum::ToString(v5_OperationType)); e->setArgument(5,v6_PanelPosition,IfcWindowPanelPositionEnum::ToString(v6_PanelPosition)); if (v7_FrameDepth) { e->setArgument(6,(*v7_FrameDepth)); } else { e->setArgument(6); } if (v8_FrameThickness) { e->setArgument(7,(*v8_FrameThickness)); } else { e->setArgument(7); } e->setArgument(8,(v9_ShapeAspectStyle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWindowStyle
IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum IfcWindowStyle::ConstructionType() const { return IfcWindowStyleConstructionEnum::FromString(*data_->getArgument(8)); }
void IfcWindowStyle::setConstructionType(IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcWindowStyleConstructionEnum::ToString(v)); }
IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum IfcWindowStyle::OperationType() const { return IfcWindowStyleOperationEnum::FromString(*data_->getArgument(9)); }
void IfcWindowStyle::setOperationType(IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcWindowStyleOperationEnum::ToString(v)); }
bool IfcWindowStyle::ParameterTakesPrecedence() const { return *data_->getArgument(10); }
void IfcWindowStyle::setParameterTakesPrecedence(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcWindowStyle::Sizeable() const { return *data_->getArgument(11); }
void IfcWindowStyle::setSizeable(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


const IfcParse::entity& IfcWindowStyle::declaration() const { return *IfcWindowStyle_type; }
Type::Enum IfcWindowStyle::Class() { return Type::IfcWindowStyle; }
IfcWindowStyle::IfcWindowStyle(IfcAbstractEntity* e) : IfcTypeProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWindowStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWindowStyle::IfcWindowStyle(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum v9_ConstructionType, IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum v10_OperationType, bool v11_ParameterTakesPrecedence, bool v12_Sizeable) : IfcTypeProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } e->setArgument(8,v9_ConstructionType,IfcWindowStyleConstructionEnum::ToString(v9_ConstructionType)); e->setArgument(9,v10_OperationType,IfcWindowStyleOperationEnum::ToString(v10_OperationType)); e->setArgument(10,(v11_ParameterTakesPrecedence)); e->setArgument(11,(v12_Sizeable)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWorkControl
std::string IfcWorkControl::Identifier() const { return *data_->getArgument(5); }
void IfcWorkControl::setIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcDateTimeSelect* IfcWorkControl::CreationDate() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcWorkControl::setCreationDate(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcWorkControl::hasCreators() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcPerson >::ptr IfcWorkControl::Creators() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcPerson>(); }
void IfcWorkControl::setCreators(IfcTemplatedEntityList< IfcPerson >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
bool IfcWorkControl::hasPurpose() const { return !data_->getArgument(8)->isNull(); }
std::string IfcWorkControl::Purpose() const { return *data_->getArgument(8); }
void IfcWorkControl::setPurpose(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcWorkControl::hasDuration() const { return !data_->getArgument(9)->isNull(); }
double IfcWorkControl::Duration() const { return *data_->getArgument(9); }
void IfcWorkControl::setDuration(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcWorkControl::hasTotalFloat() const { return !data_->getArgument(10)->isNull(); }
double IfcWorkControl::TotalFloat() const { return *data_->getArgument(10); }
void IfcWorkControl::setTotalFloat(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
IfcDateTimeSelect* IfcWorkControl::StartTime() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(11))); }
void IfcWorkControl::setStartTime(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcWorkControl::hasFinishTime() const { return !data_->getArgument(12)->isNull(); }
IfcDateTimeSelect* IfcWorkControl::FinishTime() const { return (IfcDateTimeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(12))); }
void IfcWorkControl::setFinishTime(IfcDateTimeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcWorkControl::hasWorkControlType() const { return !data_->getArgument(13)->isNull(); }
IfcWorkControlTypeEnum::IfcWorkControlTypeEnum IfcWorkControl::WorkControlType() const { return IfcWorkControlTypeEnum::FromString(*data_->getArgument(13)); }
void IfcWorkControl::setWorkControlType(IfcWorkControlTypeEnum::IfcWorkControlTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v,IfcWorkControlTypeEnum::ToString(v)); }
bool IfcWorkControl::hasUserDefinedControlType() const { return !data_->getArgument(14)->isNull(); }
std::string IfcWorkControl::UserDefinedControlType() const { return *data_->getArgument(14); }
void IfcWorkControl::setUserDefinedControlType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }


const IfcParse::entity& IfcWorkControl::declaration() const { return *IfcWorkControl_type; }
Type::Enum IfcWorkControl::Class() { return Type::IfcWorkControl; }
IfcWorkControl::IfcWorkControl(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWorkControl)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, std::string v6_Identifier, IfcDateTimeSelect* v7_CreationDate, boost::optional< IfcTemplatedEntityList< IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< double > v10_Duration, boost::optional< double > v11_TotalFloat, IfcDateTimeSelect* v12_StartTime, IfcDateTimeSelect* v13_FinishTime, boost::optional< IfcWorkControlTypeEnum::IfcWorkControlTypeEnum > v14_WorkControlType, boost::optional< std::string > v15_UserDefinedControlType) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_Identifier)); e->setArgument(6,(v7_CreationDate)); if (v8_Creators) { e->setArgument(7,(*v8_Creators)->generalize()); } else { e->setArgument(7); } if (v9_Purpose) { e->setArgument(8,(*v9_Purpose)); } else { e->setArgument(8); } if (v10_Duration) { e->setArgument(9,(*v10_Duration)); } else { e->setArgument(9); } if (v11_TotalFloat) { e->setArgument(10,(*v11_TotalFloat)); } else { e->setArgument(10); } e->setArgument(11,(v12_StartTime)); e->setArgument(12,(v13_FinishTime)); if (v14_WorkControlType) { e->setArgument(13,*v14_WorkControlType,IfcWorkControlTypeEnum::ToString(*v14_WorkControlType)); } else { e->setArgument(13); } if (v15_UserDefinedControlType) { e->setArgument(14,(*v15_UserDefinedControlType)); } else { e->setArgument(14); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWorkPlan


const IfcParse::entity& IfcWorkPlan::declaration() const { return *IfcWorkPlan_type; }
Type::Enum IfcWorkPlan::Class() { return Type::IfcWorkPlan; }
IfcWorkPlan::IfcWorkPlan(IfcAbstractEntity* e) : IfcWorkControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWorkPlan)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, std::string v6_Identifier, IfcDateTimeSelect* v7_CreationDate, boost::optional< IfcTemplatedEntityList< IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< double > v10_Duration, boost::optional< double > v11_TotalFloat, IfcDateTimeSelect* v12_StartTime, IfcDateTimeSelect* v13_FinishTime, boost::optional< IfcWorkControlTypeEnum::IfcWorkControlTypeEnum > v14_WorkControlType, boost::optional< std::string > v15_UserDefinedControlType) : IfcWorkControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_Identifier)); e->setArgument(6,(v7_CreationDate)); if (v8_Creators) { e->setArgument(7,(*v8_Creators)->generalize()); } else { e->setArgument(7); } if (v9_Purpose) { e->setArgument(8,(*v9_Purpose)); } else { e->setArgument(8); } if (v10_Duration) { e->setArgument(9,(*v10_Duration)); } else { e->setArgument(9); } if (v11_TotalFloat) { e->setArgument(10,(*v11_TotalFloat)); } else { e->setArgument(10); } e->setArgument(11,(v12_StartTime)); e->setArgument(12,(v13_FinishTime)); if (v14_WorkControlType) { e->setArgument(13,*v14_WorkControlType,IfcWorkControlTypeEnum::ToString(*v14_WorkControlType)); } else { e->setArgument(13); } if (v15_UserDefinedControlType) { e->setArgument(14,(*v15_UserDefinedControlType)); } else { e->setArgument(14); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWorkSchedule


const IfcParse::entity& IfcWorkSchedule::declaration() const { return *IfcWorkSchedule_type; }
Type::Enum IfcWorkSchedule::Class() { return Type::IfcWorkSchedule; }
IfcWorkSchedule::IfcWorkSchedule(IfcAbstractEntity* e) : IfcWorkControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWorkSchedule)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, std::string v6_Identifier, IfcDateTimeSelect* v7_CreationDate, boost::optional< IfcTemplatedEntityList< IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< double > v10_Duration, boost::optional< double > v11_TotalFloat, IfcDateTimeSelect* v12_StartTime, IfcDateTimeSelect* v13_FinishTime, boost::optional< IfcWorkControlTypeEnum::IfcWorkControlTypeEnum > v14_WorkControlType, boost::optional< std::string > v15_UserDefinedControlType) : IfcWorkControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_Identifier)); e->setArgument(6,(v7_CreationDate)); if (v8_Creators) { e->setArgument(7,(*v8_Creators)->generalize()); } else { e->setArgument(7); } if (v9_Purpose) { e->setArgument(8,(*v9_Purpose)); } else { e->setArgument(8); } if (v10_Duration) { e->setArgument(9,(*v10_Duration)); } else { e->setArgument(9); } if (v11_TotalFloat) { e->setArgument(10,(*v11_TotalFloat)); } else { e->setArgument(10); } e->setArgument(11,(v12_StartTime)); e->setArgument(12,(v13_FinishTime)); if (v14_WorkControlType) { e->setArgument(13,*v14_WorkControlType,IfcWorkControlTypeEnum::ToString(*v14_WorkControlType)); } else { e->setArgument(13); } if (v15_UserDefinedControlType) { e->setArgument(14,(*v15_UserDefinedControlType)); } else { e->setArgument(14); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcZShapeProfileDef
double IfcZShapeProfileDef::Depth() const { return *data_->getArgument(3); }
void IfcZShapeProfileDef::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcZShapeProfileDef::FlangeWidth() const { return *data_->getArgument(4); }
void IfcZShapeProfileDef::setFlangeWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcZShapeProfileDef::WebThickness() const { return *data_->getArgument(5); }
void IfcZShapeProfileDef::setWebThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcZShapeProfileDef::FlangeThickness() const { return *data_->getArgument(6); }
void IfcZShapeProfileDef::setFlangeThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcZShapeProfileDef::hasFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcZShapeProfileDef::FilletRadius() const { return *data_->getArgument(7); }
void IfcZShapeProfileDef::setFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcZShapeProfileDef::hasEdgeRadius() const { return !data_->getArgument(8)->isNull(); }
double IfcZShapeProfileDef::EdgeRadius() const { return *data_->getArgument(8); }
void IfcZShapeProfileDef::setEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcZShapeProfileDef::declaration() const { return *IfcZShapeProfileDef_type; }
Type::Enum IfcZShapeProfileDef::Class() { return Type::IfcZShapeProfileDef; }
IfcZShapeProfileDef::IfcZShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcZShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcZShapeProfileDef::IfcZShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_EdgeRadius) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_Depth)); e->setArgument(4,(v5_FlangeWidth)); e->setArgument(5,(v6_WebThickness)); e->setArgument(6,(v7_FlangeThickness)); if (v8_FilletRadius) { e->setArgument(7,(*v8_FilletRadius)); } else { e->setArgument(7); } if (v9_EdgeRadius) { e->setArgument(8,(*v9_EdgeRadius)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcZone


const IfcParse::entity& IfcZone::declaration() const { return *IfcZone_type; }
Type::Enum IfcZone::Class() { return Type::IfcZone; }
IfcZone::IfcZone(IfcAbstractEntity* e) : IfcGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcZone)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcZone::IfcZone(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

#endif
