Program Listing for File Ifc2x3.h

Return to documentation for file (src/ifcparse/Ifc2x3.h)

/********************************************************************************
 *                                                                              *
 * 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 IFC2X3_H
#define IFC2X3_H

#include <string>
#include <vector>

#include <boost/optional.hpp>

#include "../ifcparse/ifc_parse_api.h"

#include "../ifcparse/IfcEntityList.h"
#include "../ifcparse/IfcBaseClass.h"
#include "../ifcparse/IfcSchema.h"
#include "../ifcparse/IfcException.h"
#include "../ifcparse/Argument.h"

struct Ifc2x3 {

static const IfcParse::schema_definition& get_schema();

static const char* const Identifier;

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

typedef IfcUtil::IfcBaseClass IfcActorSelect;
typedef IfcUtil::IfcBaseClass IfcAppliedValueSelect;
typedef IfcUtil::IfcBaseClass IfcAxis2Placement;
typedef IfcUtil::IfcBaseClass IfcBooleanOperand;
typedef IfcUtil::IfcBaseClass IfcCharacterStyleSelect;

typedef IfcUtil::IfcBaseClass IfcClassificationNotationSelect;
typedef IfcUtil::IfcBaseClass IfcColour;
typedef IfcUtil::IfcBaseClass IfcColourOrFactor;

typedef IfcUtil::IfcBaseClass IfcConditionCriterionSelect;
typedef IfcUtil::IfcBaseClass IfcCsgSelect;
typedef IfcUtil::IfcBaseClass IfcCurveFontOrScaledCurveFontSelect;
typedef IfcUtil::IfcBaseClass IfcCurveOrEdgeCurve;
typedef IfcUtil::IfcBaseClass IfcCurveStyleFontSelect;

typedef IfcUtil::IfcBaseClass IfcDateTimeSelect;
typedef IfcUtil::IfcBaseClass IfcDefinedSymbolSelect;
typedef IfcUtil::IfcBaseClass IfcDerivedMeasureValue;
typedef IfcUtil::IfcBaseClass IfcDocumentSelect;

typedef IfcUtil::IfcBaseClass IfcDraughtingCalloutElement;
typedef IfcUtil::IfcBaseClass IfcFillAreaStyleTileShapeSelect;
typedef IfcUtil::IfcBaseClass IfcFillStyleSelect;
typedef IfcUtil::IfcBaseClass IfcGeometricSetSelect;
typedef IfcUtil::IfcBaseClass IfcHatchLineDistanceSelect;
typedef IfcUtil::IfcBaseClass IfcLayeredItem;
typedef IfcUtil::IfcBaseClass IfcLibrarySelect;
typedef IfcUtil::IfcBaseClass IfcLightDistributionDataSourceSelect;
typedef IfcUtil::IfcBaseClass IfcMaterialSelect;
typedef IfcUtil::IfcBaseClass IfcMeasureValue;
typedef IfcUtil::IfcBaseClass IfcMetricValueSelect;
typedef IfcUtil::IfcBaseClass IfcObjectReferenceSelect;

typedef IfcUtil::IfcBaseClass IfcOrientationSelect;
typedef IfcUtil::IfcBaseClass IfcPointOrVertexPoint;
typedef IfcUtil::IfcBaseClass IfcPresentationStyleSelect;
typedef IfcUtil::IfcBaseClass IfcShell;
typedef IfcUtil::IfcBaseClass IfcSimpleValue;
typedef IfcUtil::IfcBaseClass IfcSizeSelect;
typedef IfcUtil::IfcBaseClass IfcSpecularHighlightSelect;
typedef IfcUtil::IfcBaseClass IfcStructuralActivityAssignmentSelect;
typedef IfcUtil::IfcBaseClass IfcSurfaceOrFaceSurface;
typedef IfcUtil::IfcBaseClass IfcSurfaceStyleElementSelect;
typedef IfcUtil::IfcBaseClass IfcSymbolStyleSelect;
typedef IfcUtil::IfcBaseClass IfcTextFontSelect;
typedef IfcUtil::IfcBaseClass IfcTextStyleSelect;
typedef IfcUtil::IfcBaseClass IfcTrimmingSelect;
typedef IfcUtil::IfcBaseClass IfcUnit;
typedef IfcUtil::IfcBaseClass IfcValue;
typedef IfcUtil::IfcBaseClass IfcVectorOrDirection;
struct IfcActionSourceTypeEnum {
typedef enum {IfcActionSourceType_DEAD_LOAD_G, IfcActionSourceType_COMPLETION_G1, IfcActionSourceType_LIVE_LOAD_Q, IfcActionSourceType_SNOW_S, IfcActionSourceType_WIND_W, IfcActionSourceType_PRESTRESSING_P, IfcActionSourceType_SETTLEMENT_U, IfcActionSourceType_TEMPERATURE_T, IfcActionSourceType_EARTHQUAKE_E, IfcActionSourceType_FIRE, IfcActionSourceType_IMPULSE, IfcActionSourceType_IMPACT, IfcActionSourceType_TRANSPORT, IfcActionSourceType_ERECTION, IfcActionSourceType_PROPPING, IfcActionSourceType_SYSTEM_IMPERFECTION, IfcActionSourceType_SHRINKAGE, IfcActionSourceType_CREEP, IfcActionSourceType_LACK_OF_FIT, IfcActionSourceType_BUOYANCY, IfcActionSourceType_ICE, IfcActionSourceType_CURRENT, IfcActionSourceType_WAVE, IfcActionSourceType_RAIN, IfcActionSourceType_BRAKES, IfcActionSourceType_USERDEFINED, IfcActionSourceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcActionTypeEnum {
typedef enum {IfcActionType_PERMANENT_G, IfcActionType_VARIABLE_Q, IfcActionType_EXTRAORDINARY_A, IfcActionType_USERDEFINED, IfcActionType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcActuatorTypeEnum {
typedef enum {IfcActuatorType_ELECTRICACTUATOR, IfcActuatorType_HANDOPERATEDACTUATOR, IfcActuatorType_HYDRAULICACTUATOR, IfcActuatorType_PNEUMATICACTUATOR, IfcActuatorType_THERMOSTATICACTUATOR, IfcActuatorType_USERDEFINED, IfcActuatorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAddressTypeEnum {
typedef enum {IfcAddressType_OFFICE, IfcAddressType_SITE, IfcAddressType_HOME, IfcAddressType_DISTRIBUTIONPOINT, IfcAddressType_USERDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAheadOrBehind {

typedef enum {IfcAheadOrBehind_AHEAD, IfcAheadOrBehind_BEHIND} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAirTerminalBoxTypeEnum {
typedef enum {IfcAirTerminalBoxType_CONSTANTFLOW, IfcAirTerminalBoxType_VARIABLEFLOWPRESSUREDEPENDANT, IfcAirTerminalBoxType_VARIABLEFLOWPRESSUREINDEPENDANT, IfcAirTerminalBoxType_USERDEFINED, IfcAirTerminalBoxType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAirTerminalTypeEnum {
typedef enum {IfcAirTerminalType_GRILLE, IfcAirTerminalType_REGISTER, IfcAirTerminalType_DIFFUSER, IfcAirTerminalType_EYEBALL, IfcAirTerminalType_IRIS, IfcAirTerminalType_LINEARGRILLE, IfcAirTerminalType_LINEARDIFFUSER, IfcAirTerminalType_USERDEFINED, IfcAirTerminalType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAirToAirHeatRecoveryTypeEnum {
typedef enum {IfcAirToAirHeatRecoveryType_FIXEDPLATECOUNTERFLOWEXCHANGER, IfcAirToAirHeatRecoveryType_FIXEDPLATECROSSFLOWEXCHANGER, IfcAirToAirHeatRecoveryType_FIXEDPLATEPARALLELFLOWEXCHANGER, IfcAirToAirHeatRecoveryType_ROTARYWHEEL, IfcAirToAirHeatRecoveryType_RUNAROUNDCOILLOOP, IfcAirToAirHeatRecoveryType_HEATPIPE, IfcAirToAirHeatRecoveryType_TWINTOWERENTHALPYRECOVERYLOOPS, IfcAirToAirHeatRecoveryType_THERMOSIPHONSEALEDTUBEHEATEXCHANGERS, IfcAirToAirHeatRecoveryType_THERMOSIPHONCOILTYPEHEATEXCHANGERS, IfcAirToAirHeatRecoveryType_USERDEFINED, IfcAirToAirHeatRecoveryType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAlarmTypeEnum {
typedef enum {IfcAlarmType_BELL, IfcAlarmType_BREAKGLASSBUTTON, IfcAlarmType_LIGHT, IfcAlarmType_MANUALPULLBOX, IfcAlarmType_SIREN, IfcAlarmType_WHISTLE, IfcAlarmType_USERDEFINED, IfcAlarmType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAnalysisModelTypeEnum {
typedef enum {IfcAnalysisModelType_IN_PLANE_LOADING_2D, IfcAnalysisModelType_OUT_PLANE_LOADING_2D, IfcAnalysisModelType_LOADING_3D, IfcAnalysisModelType_USERDEFINED, IfcAnalysisModelType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAnalysisTheoryTypeEnum {
typedef enum {IfcAnalysisTheoryType_FIRST_ORDER_THEORY, IfcAnalysisTheoryType_SECOND_ORDER_THEORY, IfcAnalysisTheoryType_THIRD_ORDER_THEORY, IfcAnalysisTheoryType_FULL_NONLINEAR_THEORY, IfcAnalysisTheoryType_USERDEFINED, IfcAnalysisTheoryType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcArithmeticOperatorEnum {
typedef enum {IfcArithmeticOperator_ADD, IfcArithmeticOperator_DIVIDE, IfcArithmeticOperator_MULTIPLY, IfcArithmeticOperator_SUBTRACT} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAssemblyPlaceEnum {
typedef enum {IfcAssemblyPlace_SITE, IfcAssemblyPlace_FACTORY, IfcAssemblyPlace_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBSplineCurveForm {
typedef enum {IfcBSplineCurveForm_POLYLINE_FORM, IfcBSplineCurveForm_CIRCULAR_ARC, IfcBSplineCurveForm_ELLIPTIC_ARC, IfcBSplineCurveForm_PARABOLIC_ARC, IfcBSplineCurveForm_HYPERBOLIC_ARC, IfcBSplineCurveForm_UNSPECIFIED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBeamTypeEnum {
typedef enum {IfcBeamType_BEAM, IfcBeamType_JOIST, IfcBeamType_LINTEL, IfcBeamType_T_BEAM, IfcBeamType_USERDEFINED, IfcBeamType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBenchmarkEnum {
typedef enum {IfcBenchmark_GREATERTHAN, IfcBenchmark_GREATERTHANOREQUALTO, IfcBenchmark_LESSTHAN, IfcBenchmark_LESSTHANOREQUALTO, IfcBenchmark_EQUALTO, IfcBenchmark_NOTEQUALTO} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBoilerTypeEnum {
typedef enum {IfcBoilerType_WATER, IfcBoilerType_STEAM, IfcBoilerType_USERDEFINED, IfcBoilerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBooleanOperator {
typedef enum {IfcBooleanOperator_UNION, IfcBooleanOperator_INTERSECTION, IfcBooleanOperator_DIFFERENCE} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBuildingElementProxyTypeEnum {
typedef enum {IfcBuildingElementProxyType_USERDEFINED, IfcBuildingElementProxyType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCableCarrierFittingTypeEnum {
typedef enum {IfcCableCarrierFittingType_BEND, IfcCableCarrierFittingType_CROSS, IfcCableCarrierFittingType_REDUCER, IfcCableCarrierFittingType_TEE, IfcCableCarrierFittingType_USERDEFINED, IfcCableCarrierFittingType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCableCarrierSegmentTypeEnum {
typedef enum {IfcCableCarrierSegmentType_CABLELADDERSEGMENT, IfcCableCarrierSegmentType_CABLETRAYSEGMENT, IfcCableCarrierSegmentType_CABLETRUNKINGSEGMENT, IfcCableCarrierSegmentType_CONDUITSEGMENT, IfcCableCarrierSegmentType_USERDEFINED, IfcCableCarrierSegmentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCableSegmentTypeEnum {
typedef enum {IfcCableSegmentType_CABLESEGMENT, IfcCableSegmentType_CONDUCTORSEGMENT, IfcCableSegmentType_USERDEFINED, IfcCableSegmentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcChangeActionEnum {
typedef enum {IfcChangeAction_NOCHANGE, IfcChangeAction_MODIFIED, IfcChangeAction_ADDED, IfcChangeAction_DELETED, IfcChangeAction_MODIFIEDADDED, IfcChangeAction_MODIFIEDDELETED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcChillerTypeEnum {
typedef enum {IfcChillerType_AIRCOOLED, IfcChillerType_WATERCOOLED, IfcChillerType_HEATRECOVERY, IfcChillerType_USERDEFINED, IfcChillerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCoilTypeEnum {
typedef enum {IfcCoilType_DXCOOLINGCOIL, IfcCoilType_WATERCOOLINGCOIL, IfcCoilType_STEAMHEATINGCOIL, IfcCoilType_WATERHEATINGCOIL, IfcCoilType_ELECTRICHEATINGCOIL, IfcCoilType_GASHEATINGCOIL, IfcCoilType_USERDEFINED, IfcCoilType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcColumnTypeEnum {
typedef enum {IfcColumnType_COLUMN, IfcColumnType_USERDEFINED, IfcColumnType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCompressorTypeEnum {
typedef enum {IfcCompressorType_DYNAMIC, IfcCompressorType_RECIPROCATING, IfcCompressorType_ROTARY, IfcCompressorType_SCROLL, IfcCompressorType_TROCHOIDAL, IfcCompressorType_SINGLESTAGE, IfcCompressorType_BOOSTER, IfcCompressorType_OPENTYPE, IfcCompressorType_HERMETIC, IfcCompressorType_SEMIHERMETIC, IfcCompressorType_WELDEDSHELLHERMETIC, IfcCompressorType_ROLLINGPISTON, IfcCompressorType_ROTARYVANE, IfcCompressorType_SINGLESCREW, IfcCompressorType_TWINSCREW, IfcCompressorType_USERDEFINED, IfcCompressorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCondenserTypeEnum {
typedef enum {IfcCondenserType_WATERCOOLEDSHELLTUBE, IfcCondenserType_WATERCOOLEDSHELLCOIL, IfcCondenserType_WATERCOOLEDTUBEINTUBE, IfcCondenserType_WATERCOOLEDBRAZEDPLATE, IfcCondenserType_AIRCOOLED, IfcCondenserType_EVAPORATIVECOOLED, IfcCondenserType_USERDEFINED, IfcCondenserType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcConnectionTypeEnum {
typedef enum {IfcConnectionType_ATPATH, IfcConnectionType_ATSTART, IfcConnectionType_ATEND, IfcConnectionType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcConstraintEnum {
typedef enum {IfcConstraint_HARD, IfcConstraint_SOFT, IfcConstraint_ADVISORY, IfcConstraint_USERDEFINED, IfcConstraint_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcControllerTypeEnum {
typedef enum {IfcControllerType_FLOATING, IfcControllerType_PROPORTIONAL, IfcControllerType_PROPORTIONALINTEGRAL, IfcControllerType_PROPORTIONALINTEGRALDERIVATIVE, IfcControllerType_TIMEDTWOPOSITION, IfcControllerType_TWOPOSITION, IfcControllerType_USERDEFINED, IfcControllerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCooledBeamTypeEnum {
typedef enum {IfcCooledBeamType_ACTIVE, IfcCooledBeamType_PASSIVE, IfcCooledBeamType_USERDEFINED, IfcCooledBeamType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCoolingTowerTypeEnum {
typedef enum {IfcCoolingTowerType_NATURALDRAFT, IfcCoolingTowerType_MECHANICALINDUCEDDRAFT, IfcCoolingTowerType_MECHANICALFORCEDDRAFT, IfcCoolingTowerType_USERDEFINED, IfcCoolingTowerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCostScheduleTypeEnum {
typedef enum {IfcCostScheduleType_BUDGET, IfcCostScheduleType_COSTPLAN, IfcCostScheduleType_ESTIMATE, IfcCostScheduleType_TENDER, IfcCostScheduleType_PRICEDBILLOFQUANTITIES, IfcCostScheduleType_UNPRICEDBILLOFQUANTITIES, IfcCostScheduleType_SCHEDULEOFRATES, IfcCostScheduleType_USERDEFINED, IfcCostScheduleType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCoveringTypeEnum {
typedef enum {IfcCoveringType_CEILING, IfcCoveringType_FLOORING, IfcCoveringType_CLADDING, IfcCoveringType_ROOFING, IfcCoveringType_INSULATION, IfcCoveringType_MEMBRANE, IfcCoveringType_SLEEVING, IfcCoveringType_WRAPPING, IfcCoveringType_USERDEFINED, IfcCoveringType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCurrencyEnum {

typedef enum {IfcCurrency_AED, IfcCurrency_AES, IfcCurrency_ATS, IfcCurrency_AUD, IfcCurrency_BBD, IfcCurrency_BEG, IfcCurrency_BGL, IfcCurrency_BHD, IfcCurrency_BMD, IfcCurrency_BND, IfcCurrency_BRL, IfcCurrency_BSD, IfcCurrency_BWP, IfcCurrency_BZD, IfcCurrency_CAD, IfcCurrency_CBD, IfcCurrency_CHF, IfcCurrency_CLP, IfcCurrency_CNY, IfcCurrency_CYS, IfcCurrency_CZK, IfcCurrency_DDP, IfcCurrency_DEM, IfcCurrency_DKK, IfcCurrency_EGL, IfcCurrency_EST, IfcCurrency_EUR, IfcCurrency_FAK, IfcCurrency_FIM, IfcCurrency_FJD, IfcCurrency_FKP, IfcCurrency_FRF, IfcCurrency_GBP, IfcCurrency_GIP, IfcCurrency_GMD, IfcCurrency_GRX, IfcCurrency_HKD, IfcCurrency_HUF, IfcCurrency_ICK, IfcCurrency_IDR, IfcCurrency_ILS, IfcCurrency_INR, IfcCurrency_IRP, IfcCurrency_ITL, IfcCurrency_JMD, IfcCurrency_JOD, IfcCurrency_JPY, IfcCurrency_KES, IfcCurrency_KRW, IfcCurrency_KWD, IfcCurrency_KYD, IfcCurrency_LKR, IfcCurrency_LUF, IfcCurrency_MTL, IfcCurrency_MUR, IfcCurrency_MXN, IfcCurrency_MYR, IfcCurrency_NLG, IfcCurrency_NZD, IfcCurrency_OMR, IfcCurrency_PGK, IfcCurrency_PHP, IfcCurrency_PKR, IfcCurrency_PLN, IfcCurrency_PTN, IfcCurrency_QAR, IfcCurrency_RUR, IfcCurrency_SAR, IfcCurrency_SCR, IfcCurrency_SEK, IfcCurrency_SGD, IfcCurrency_SKP, IfcCurrency_THB, IfcCurrency_TRL, IfcCurrency_TTD, IfcCurrency_TWD, IfcCurrency_USD, IfcCurrency_VEB, IfcCurrency_VND, IfcCurrency_XEU, IfcCurrency_ZAR, IfcCurrency_ZWD, IfcCurrency_NOK} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCurtainWallTypeEnum {
typedef enum {IfcCurtainWallType_USERDEFINED, IfcCurtainWallType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDamperTypeEnum {
typedef enum {IfcDamperType_CONTROLDAMPER, IfcDamperType_FIREDAMPER, IfcDamperType_SMOKEDAMPER, IfcDamperType_FIRESMOKEDAMPER, IfcDamperType_BACKDRAFTDAMPER, IfcDamperType_RELIEFDAMPER, IfcDamperType_BLASTDAMPER, IfcDamperType_GRAVITYDAMPER, IfcDamperType_GRAVITYRELIEFDAMPER, IfcDamperType_BALANCINGDAMPER, IfcDamperType_FUMEHOODEXHAUST, IfcDamperType_USERDEFINED, IfcDamperType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDataOriginEnum {
typedef enum {IfcDataOrigin_MEASURED, IfcDataOrigin_PREDICTED, IfcDataOrigin_SIMULATED, IfcDataOrigin_USERDEFINED, IfcDataOrigin_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDerivedUnitEnum {
typedef enum {IfcDerivedUnit_ANGULARVELOCITYUNIT, IfcDerivedUnit_COMPOUNDPLANEANGLEUNIT, IfcDerivedUnit_DYNAMICVISCOSITYUNIT, IfcDerivedUnit_HEATFLUXDENSITYUNIT, IfcDerivedUnit_INTEGERCOUNTRATEUNIT, IfcDerivedUnit_ISOTHERMALMOISTURECAPACITYUNIT, IfcDerivedUnit_KINEMATICVISCOSITYUNIT, IfcDerivedUnit_LINEARVELOCITYUNIT, IfcDerivedUnit_MASSDENSITYUNIT, IfcDerivedUnit_MASSFLOWRATEUNIT, IfcDerivedUnit_MOISTUREDIFFUSIVITYUNIT, IfcDerivedUnit_MOLECULARWEIGHTUNIT, IfcDerivedUnit_SPECIFICHEATCAPACITYUNIT, IfcDerivedUnit_THERMALADMITTANCEUNIT, IfcDerivedUnit_THERMALCONDUCTANCEUNIT, IfcDerivedUnit_THERMALRESISTANCEUNIT, IfcDerivedUnit_THERMALTRANSMITTANCEUNIT, IfcDerivedUnit_VAPORPERMEABILITYUNIT, IfcDerivedUnit_VOLUMETRICFLOWRATEUNIT, IfcDerivedUnit_ROTATIONALFREQUENCYUNIT, IfcDerivedUnit_TORQUEUNIT, IfcDerivedUnit_MOMENTOFINERTIAUNIT, IfcDerivedUnit_LINEARMOMENTUNIT, IfcDerivedUnit_LINEARFORCEUNIT, IfcDerivedUnit_PLANARFORCEUNIT, IfcDerivedUnit_MODULUSOFELASTICITYUNIT, IfcDerivedUnit_SHEARMODULUSUNIT, IfcDerivedUnit_LINEARSTIFFNESSUNIT, IfcDerivedUnit_ROTATIONALSTIFFNESSUNIT, IfcDerivedUnit_MODULUSOFSUBGRADEREACTIONUNIT, IfcDerivedUnit_ACCELERATIONUNIT, IfcDerivedUnit_CURVATUREUNIT, IfcDerivedUnit_HEATINGVALUEUNIT, IfcDerivedUnit_IONCONCENTRATIONUNIT, IfcDerivedUnit_LUMINOUSINTENSITYDISTRIBUTIONUNIT, IfcDerivedUnit_MASSPERLENGTHUNIT, IfcDerivedUnit_MODULUSOFLINEARSUBGRADEREACTIONUNIT, IfcDerivedUnit_MODULUSOFROTATIONALSUBGRADEREACTIONUNIT, IfcDerivedUnit_PHUNIT, IfcDerivedUnit_ROTATIONALMASSUNIT, IfcDerivedUnit_SECTIONAREAINTEGRALUNIT, IfcDerivedUnit_SECTIONMODULUSUNIT, IfcDerivedUnit_SOUNDPOWERUNIT, IfcDerivedUnit_SOUNDPRESSUREUNIT, IfcDerivedUnit_TEMPERATUREGRADIENTUNIT, IfcDerivedUnit_THERMALEXPANSIONCOEFFICIENTUNIT, IfcDerivedUnit_WARPINGCONSTANTUNIT, IfcDerivedUnit_WARPINGMOMENTUNIT, IfcDerivedUnit_USERDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDimensionExtentUsage {

typedef enum {IfcDimensionExtentUsage_ORIGIN, IfcDimensionExtentUsage_TARGET} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDirectionSenseEnum {
typedef enum {IfcDirectionSense_POSITIVE, IfcDirectionSense_NEGATIVE} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDistributionChamberElementTypeEnum {
typedef enum {IfcDistributionChamberElementType_FORMEDDUCT, IfcDistributionChamberElementType_INSPECTIONCHAMBER, IfcDistributionChamberElementType_INSPECTIONPIT, IfcDistributionChamberElementType_MANHOLE, IfcDistributionChamberElementType_METERCHAMBER, IfcDistributionChamberElementType_SUMP, IfcDistributionChamberElementType_TRENCH, IfcDistributionChamberElementType_VALVECHAMBER, IfcDistributionChamberElementType_USERDEFINED, IfcDistributionChamberElementType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDocumentConfidentialityEnum {
typedef enum {IfcDocumentConfidentiality_PUBLIC, IfcDocumentConfidentiality_RESTRICTED, IfcDocumentConfidentiality_CONFIDENTIAL, IfcDocumentConfidentiality_PERSONAL, IfcDocumentConfidentiality_USERDEFINED, IfcDocumentConfidentiality_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDocumentStatusEnum {
typedef enum {IfcDocumentStatus_DRAFT, IfcDocumentStatus_FINALDRAFT, IfcDocumentStatus_FINAL, IfcDocumentStatus_REVISION, IfcDocumentStatus_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDoorPanelOperationEnum {
typedef enum {IfcDoorPanelOperation_SWINGING, IfcDoorPanelOperation_DOUBLE_ACTING, IfcDoorPanelOperation_SLIDING, IfcDoorPanelOperation_FOLDING, IfcDoorPanelOperation_REVOLVING, IfcDoorPanelOperation_ROLLINGUP, IfcDoorPanelOperation_USERDEFINED, IfcDoorPanelOperation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDoorPanelPositionEnum {
typedef enum {IfcDoorPanelPosition_LEFT, IfcDoorPanelPosition_MIDDLE, IfcDoorPanelPosition_RIGHT, IfcDoorPanelPosition_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDoorStyleConstructionEnum {
typedef enum {IfcDoorStyleConstruction_ALUMINIUM, IfcDoorStyleConstruction_HIGH_GRADE_STEEL, IfcDoorStyleConstruction_STEEL, IfcDoorStyleConstruction_WOOD, IfcDoorStyleConstruction_ALUMINIUM_WOOD, IfcDoorStyleConstruction_ALUMINIUM_PLASTIC, IfcDoorStyleConstruction_PLASTIC, IfcDoorStyleConstruction_USERDEFINED, IfcDoorStyleConstruction_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDoorStyleOperationEnum {
typedef enum {IfcDoorStyleOperation_SINGLE_SWING_LEFT, IfcDoorStyleOperation_SINGLE_SWING_RIGHT, IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING, IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT, IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT, IfcDoorStyleOperation_DOUBLE_SWING_LEFT, IfcDoorStyleOperation_DOUBLE_SWING_RIGHT, IfcDoorStyleOperation_DOUBLE_DOOR_DOUBLE_SWING, IfcDoorStyleOperation_SLIDING_TO_LEFT, IfcDoorStyleOperation_SLIDING_TO_RIGHT, IfcDoorStyleOperation_DOUBLE_DOOR_SLIDING, IfcDoorStyleOperation_FOLDING_TO_LEFT, IfcDoorStyleOperation_FOLDING_TO_RIGHT, IfcDoorStyleOperation_DOUBLE_DOOR_FOLDING, IfcDoorStyleOperation_REVOLVING, IfcDoorStyleOperation_ROLLINGUP, IfcDoorStyleOperation_USERDEFINED, IfcDoorStyleOperation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDuctFittingTypeEnum {
typedef enum {IfcDuctFittingType_BEND, IfcDuctFittingType_CONNECTOR, IfcDuctFittingType_ENTRY, IfcDuctFittingType_EXIT, IfcDuctFittingType_JUNCTION, IfcDuctFittingType_OBSTRUCTION, IfcDuctFittingType_TRANSITION, IfcDuctFittingType_USERDEFINED, IfcDuctFittingType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDuctSegmentTypeEnum {
typedef enum {IfcDuctSegmentType_RIGIDSEGMENT, IfcDuctSegmentType_FLEXIBLESEGMENT, IfcDuctSegmentType_USERDEFINED, IfcDuctSegmentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDuctSilencerTypeEnum {
typedef enum {IfcDuctSilencerType_FLATOVAL, IfcDuctSilencerType_RECTANGULAR, IfcDuctSilencerType_ROUND, IfcDuctSilencerType_USERDEFINED, IfcDuctSilencerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricApplianceTypeEnum {
typedef enum {IfcElectricApplianceType_COMPUTER, IfcElectricApplianceType_DIRECTWATERHEATER, IfcElectricApplianceType_DISHWASHER, IfcElectricApplianceType_ELECTRICCOOKER, IfcElectricApplianceType_ELECTRICHEATER, IfcElectricApplianceType_FACSIMILE, IfcElectricApplianceType_FREESTANDINGFAN, IfcElectricApplianceType_FREEZER, IfcElectricApplianceType_FRIDGE_FREEZER, IfcElectricApplianceType_HANDDRYER, IfcElectricApplianceType_INDIRECTWATERHEATER, IfcElectricApplianceType_MICROWAVE, IfcElectricApplianceType_PHOTOCOPIER, IfcElectricApplianceType_PRINTER, IfcElectricApplianceType_REFRIGERATOR, IfcElectricApplianceType_RADIANTHEATER, IfcElectricApplianceType_SCANNER, IfcElectricApplianceType_TELEPHONE, IfcElectricApplianceType_TUMBLEDRYER, IfcElectricApplianceType_TV, IfcElectricApplianceType_VENDINGMACHINE, IfcElectricApplianceType_WASHINGMACHINE, IfcElectricApplianceType_WATERHEATER, IfcElectricApplianceType_WATERCOOLER, IfcElectricApplianceType_USERDEFINED, IfcElectricApplianceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricCurrentEnum {

typedef enum {IfcElectricCurrent_ALTERNATING, IfcElectricCurrent_DIRECT, IfcElectricCurrent_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricDistributionPointFunctionEnum {

typedef enum {IfcElectricDistributionPointFunction_ALARMPANEL, IfcElectricDistributionPointFunction_CONSUMERUNIT, IfcElectricDistributionPointFunction_CONTROLPANEL, IfcElectricDistributionPointFunction_DISTRIBUTIONBOARD, IfcElectricDistributionPointFunction_GASDETECTORPANEL, IfcElectricDistributionPointFunction_INDICATORPANEL, IfcElectricDistributionPointFunction_MIMICPANEL, IfcElectricDistributionPointFunction_MOTORCONTROLCENTRE, IfcElectricDistributionPointFunction_SWITCHBOARD, IfcElectricDistributionPointFunction_USERDEFINED, IfcElectricDistributionPointFunction_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricFlowStorageDeviceTypeEnum {
typedef enum {IfcElectricFlowStorageDeviceType_BATTERY, IfcElectricFlowStorageDeviceType_CAPACITORBANK, IfcElectricFlowStorageDeviceType_HARMONICFILTER, IfcElectricFlowStorageDeviceType_INDUCTORBANK, IfcElectricFlowStorageDeviceType_UPS, IfcElectricFlowStorageDeviceType_USERDEFINED, IfcElectricFlowStorageDeviceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricGeneratorTypeEnum {
typedef enum {IfcElectricGeneratorType_USERDEFINED, IfcElectricGeneratorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricHeaterTypeEnum {

typedef enum {IfcElectricHeaterType_ELECTRICPOINTHEATER, IfcElectricHeaterType_ELECTRICCABLEHEATER, IfcElectricHeaterType_ELECTRICMATHEATER, IfcElectricHeaterType_USERDEFINED, IfcElectricHeaterType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricMotorTypeEnum {
typedef enum {IfcElectricMotorType_DC, IfcElectricMotorType_INDUCTION, IfcElectricMotorType_POLYPHASE, IfcElectricMotorType_RELUCTANCESYNCHRONOUS, IfcElectricMotorType_SYNCHRONOUS, IfcElectricMotorType_USERDEFINED, IfcElectricMotorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricTimeControlTypeEnum {
typedef enum {IfcElectricTimeControlType_TIMECLOCK, IfcElectricTimeControlType_TIMEDELAY, IfcElectricTimeControlType_RELAY, IfcElectricTimeControlType_USERDEFINED, IfcElectricTimeControlType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElementAssemblyTypeEnum {
typedef enum {IfcElementAssemblyType_ACCESSORY_ASSEMBLY, IfcElementAssemblyType_ARCH, IfcElementAssemblyType_BEAM_GRID, IfcElementAssemblyType_BRACED_FRAME, IfcElementAssemblyType_GIRDER, IfcElementAssemblyType_REINFORCEMENT_UNIT, IfcElementAssemblyType_RIGID_FRAME, IfcElementAssemblyType_SLAB_FIELD, IfcElementAssemblyType_TRUSS, IfcElementAssemblyType_USERDEFINED, IfcElementAssemblyType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElementCompositionEnum {
typedef enum {IfcElementComposition_COMPLEX, IfcElementComposition_ELEMENT, IfcElementComposition_PARTIAL} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcEnergySequenceEnum {

typedef enum {IfcEnergySequence_PRIMARY, IfcEnergySequence_SECONDARY, IfcEnergySequence_TERTIARY, IfcEnergySequence_AUXILIARY, IfcEnergySequence_USERDEFINED, IfcEnergySequence_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcEnvironmentalImpactCategoryEnum {

typedef enum {IfcEnvironmentalImpactCategory_COMBINEDVALUE, IfcEnvironmentalImpactCategory_DISPOSAL, IfcEnvironmentalImpactCategory_EXTRACTION, IfcEnvironmentalImpactCategory_INSTALLATION, IfcEnvironmentalImpactCategory_MANUFACTURE, IfcEnvironmentalImpactCategory_TRANSPORTATION, IfcEnvironmentalImpactCategory_USERDEFINED, IfcEnvironmentalImpactCategory_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcEvaporativeCoolerTypeEnum {
typedef enum {IfcEvaporativeCoolerType_DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVEAIRWASHER, IfcEvaporativeCoolerType_INDIRECTEVAPORATIVEPACKAGEAIRCOOLER, IfcEvaporativeCoolerType_INDIRECTEVAPORATIVEWETCOIL, IfcEvaporativeCoolerType_INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER, IfcEvaporativeCoolerType_INDIRECTDIRECTCOMBINATION, IfcEvaporativeCoolerType_USERDEFINED, IfcEvaporativeCoolerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcEvaporatorTypeEnum {
typedef enum {IfcEvaporatorType_DIRECTEXPANSIONSHELLANDTUBE, IfcEvaporatorType_DIRECTEXPANSIONTUBEINTUBE, IfcEvaporatorType_DIRECTEXPANSIONBRAZEDPLATE, IfcEvaporatorType_FLOODEDSHELLANDTUBE, IfcEvaporatorType_SHELLANDCOIL, IfcEvaporatorType_USERDEFINED, IfcEvaporatorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFanTypeEnum {
typedef enum {IfcFanType_CENTRIFUGALFORWARDCURVED, IfcFanType_CENTRIFUGALRADIAL, IfcFanType_CENTRIFUGALBACKWARDINCLINEDCURVED, IfcFanType_CENTRIFUGALAIRFOIL, IfcFanType_TUBEAXIAL, IfcFanType_VANEAXIAL, IfcFanType_PROPELLORAXIAL, IfcFanType_USERDEFINED, IfcFanType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFilterTypeEnum {
typedef enum {IfcFilterType_AIRPARTICLEFILTER, IfcFilterType_ODORFILTER, IfcFilterType_OILFILTER, IfcFilterType_STRAINER, IfcFilterType_WATERFILTER, IfcFilterType_USERDEFINED, IfcFilterType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFireSuppressionTerminalTypeEnum {
typedef enum {IfcFireSuppressionTerminalType_BREECHINGINLET, IfcFireSuppressionTerminalType_FIREHYDRANT, IfcFireSuppressionTerminalType_HOSEREEL, IfcFireSuppressionTerminalType_SPRINKLER, IfcFireSuppressionTerminalType_SPRINKLERDEFLECTOR, IfcFireSuppressionTerminalType_USERDEFINED, IfcFireSuppressionTerminalType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFlowDirectionEnum {
typedef enum {IfcFlowDirection_SOURCE, IfcFlowDirection_SINK, IfcFlowDirection_SOURCEANDSINK, IfcFlowDirection_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFlowInstrumentTypeEnum {
typedef enum {IfcFlowInstrumentType_PRESSUREGAUGE, IfcFlowInstrumentType_THERMOMETER, IfcFlowInstrumentType_AMMETER, IfcFlowInstrumentType_FREQUENCYMETER, IfcFlowInstrumentType_POWERFACTORMETER, IfcFlowInstrumentType_PHASEANGLEMETER, IfcFlowInstrumentType_VOLTMETER_PEAK, IfcFlowInstrumentType_VOLTMETER_RMS, IfcFlowInstrumentType_USERDEFINED, IfcFlowInstrumentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFlowMeterTypeEnum {
typedef enum {IfcFlowMeterType_ELECTRICMETER, IfcFlowMeterType_ENERGYMETER, IfcFlowMeterType_FLOWMETER, IfcFlowMeterType_GASMETER, IfcFlowMeterType_OILMETER, IfcFlowMeterType_WATERMETER, IfcFlowMeterType_USERDEFINED, IfcFlowMeterType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFootingTypeEnum {
typedef enum {IfcFootingType_FOOTING_BEAM, IfcFootingType_PAD_FOOTING, IfcFootingType_PILE_CAP, IfcFootingType_STRIP_FOOTING, IfcFootingType_USERDEFINED, IfcFootingType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcGasTerminalTypeEnum {

typedef enum {IfcGasTerminalType_GASAPPLIANCE, IfcGasTerminalType_GASBOOSTER, IfcGasTerminalType_GASBURNER, IfcGasTerminalType_USERDEFINED, IfcGasTerminalType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcGeometricProjectionEnum {
typedef enum {IfcGeometricProjection_GRAPH_VIEW, IfcGeometricProjection_SKETCH_VIEW, IfcGeometricProjection_MODEL_VIEW, IfcGeometricProjection_PLAN_VIEW, IfcGeometricProjection_REFLECTED_PLAN_VIEW, IfcGeometricProjection_SECTION_VIEW, IfcGeometricProjection_ELEVATION_VIEW, IfcGeometricProjection_USERDEFINED, IfcGeometricProjection_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcGlobalOrLocalEnum {
typedef enum {IfcGlobalOrLocal_GLOBAL_COORDS, IfcGlobalOrLocal_LOCAL_COORDS} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcHeatExchangerTypeEnum {
typedef enum {IfcHeatExchangerType_PLATE, IfcHeatExchangerType_SHELLANDTUBE, IfcHeatExchangerType_USERDEFINED, IfcHeatExchangerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcHumidifierTypeEnum {
typedef enum {IfcHumidifierType_STEAMINJECTION, IfcHumidifierType_ADIABATICAIRWASHER, IfcHumidifierType_ADIABATICPAN, IfcHumidifierType_ADIABATICWETTEDELEMENT, IfcHumidifierType_ADIABATICATOMIZING, IfcHumidifierType_ADIABATICULTRASONIC, IfcHumidifierType_ADIABATICRIGIDMEDIA, IfcHumidifierType_ADIABATICCOMPRESSEDAIRNOZZLE, IfcHumidifierType_ASSISTEDELECTRIC, IfcHumidifierType_ASSISTEDNATURALGAS, IfcHumidifierType_ASSISTEDPROPANE, IfcHumidifierType_ASSISTEDBUTANE, IfcHumidifierType_ASSISTEDSTEAM, IfcHumidifierType_USERDEFINED, IfcHumidifierType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcInternalOrExternalEnum {
typedef enum {IfcInternalOrExternal_INTERNAL, IfcInternalOrExternal_EXTERNAL, IfcInternalOrExternal_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcInventoryTypeEnum {
typedef enum {IfcInventoryType_ASSETINVENTORY, IfcInventoryType_SPACEINVENTORY, IfcInventoryType_FURNITUREINVENTORY, IfcInventoryType_USERDEFINED, IfcInventoryType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcJunctionBoxTypeEnum {
typedef enum {IfcJunctionBoxType_USERDEFINED, IfcJunctionBoxType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLampTypeEnum {
typedef enum {IfcLampType_COMPACTFLUORESCENT, IfcLampType_FLUORESCENT, IfcLampType_HIGHPRESSUREMERCURY, IfcLampType_HIGHPRESSURESODIUM, IfcLampType_METALHALIDE, IfcLampType_TUNGSTENFILAMENT, IfcLampType_USERDEFINED, IfcLampType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLayerSetDirectionEnum {
typedef enum {IfcLayerSetDirection_AXIS1, IfcLayerSetDirection_AXIS2, IfcLayerSetDirection_AXIS3} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLightDistributionCurveEnum {
typedef enum {IfcLightDistributionCurve_TYPE_A, IfcLightDistributionCurve_TYPE_B, IfcLightDistributionCurve_TYPE_C, IfcLightDistributionCurve_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLightEmissionSourceEnum {
typedef enum {IfcLightEmissionSource_COMPACTFLUORESCENT, IfcLightEmissionSource_FLUORESCENT, IfcLightEmissionSource_HIGHPRESSUREMERCURY, IfcLightEmissionSource_HIGHPRESSURESODIUM, IfcLightEmissionSource_LIGHTEMITTINGDIODE, IfcLightEmissionSource_LOWPRESSURESODIUM, IfcLightEmissionSource_LOWVOLTAGEHALOGEN, IfcLightEmissionSource_MAINVOLTAGEHALOGEN, IfcLightEmissionSource_METALHALIDE, IfcLightEmissionSource_TUNGSTENFILAMENT, IfcLightEmissionSource_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLightFixtureTypeEnum {
typedef enum {IfcLightFixtureType_POINTSOURCE, IfcLightFixtureType_DIRECTIONSOURCE, IfcLightFixtureType_USERDEFINED, IfcLightFixtureType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLoadGroupTypeEnum {
typedef enum {IfcLoadGroupType_LOAD_GROUP, IfcLoadGroupType_LOAD_CASE, IfcLoadGroupType_LOAD_COMBINATION_GROUP, IfcLoadGroupType_LOAD_COMBINATION, IfcLoadGroupType_USERDEFINED, IfcLoadGroupType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLogicalOperatorEnum {
typedef enum {IfcLogicalOperator_LOGICALAND, IfcLogicalOperator_LOGICALOR} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcMemberTypeEnum {
typedef enum {IfcMemberType_BRACE, IfcMemberType_CHORD, IfcMemberType_COLLAR, IfcMemberType_MEMBER, IfcMemberType_MULLION, IfcMemberType_PLATE, IfcMemberType_POST, IfcMemberType_PURLIN, IfcMemberType_RAFTER, IfcMemberType_STRINGER, IfcMemberType_STRUT, IfcMemberType_STUD, IfcMemberType_USERDEFINED, IfcMemberType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcMotorConnectionTypeEnum {
typedef enum {IfcMotorConnectionType_BELTDRIVE, IfcMotorConnectionType_COUPLING, IfcMotorConnectionType_DIRECTDRIVE, IfcMotorConnectionType_USERDEFINED, IfcMotorConnectionType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcNullStyle {
typedef enum {IfcNullStyle_NULL} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcObjectTypeEnum {
typedef enum {IfcObjectType_PRODUCT, IfcObjectType_PROCESS, IfcObjectType_CONTROL, IfcObjectType_RESOURCE, IfcObjectType_ACTOR, IfcObjectType_GROUP, IfcObjectType_PROJECT, IfcObjectType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcObjectiveEnum {
typedef enum {IfcObjective_CODECOMPLIANCE, IfcObjective_DESIGNINTENT, IfcObjective_HEALTHANDSAFETY, IfcObjective_REQUIREMENT, IfcObjective_SPECIFICATION, IfcObjective_TRIGGERCONDITION, IfcObjective_USERDEFINED, IfcObjective_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcOccupantTypeEnum {
typedef enum {IfcOccupantType_ASSIGNEE, IfcOccupantType_ASSIGNOR, IfcOccupantType_LESSEE, IfcOccupantType_LESSOR, IfcOccupantType_LETTINGAGENT, IfcOccupantType_OWNER, IfcOccupantType_TENANT, IfcOccupantType_USERDEFINED, IfcOccupantType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcOutletTypeEnum {
typedef enum {IfcOutletType_AUDIOVISUALOUTLET, IfcOutletType_COMMUNICATIONSOUTLET, IfcOutletType_POWEROUTLET, IfcOutletType_USERDEFINED, IfcOutletType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPermeableCoveringOperationEnum {
typedef enum {IfcPermeableCoveringOperation_GRILL, IfcPermeableCoveringOperation_LOUVER, IfcPermeableCoveringOperation_SCREEN, IfcPermeableCoveringOperation_USERDEFINED, IfcPermeableCoveringOperation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPhysicalOrVirtualEnum {
typedef enum {IfcPhysicalOrVirtual_PHYSICAL, IfcPhysicalOrVirtual_VIRTUAL, IfcPhysicalOrVirtual_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPileConstructionEnum {
typedef enum {IfcPileConstruction_CAST_IN_PLACE, IfcPileConstruction_COMPOSITE, IfcPileConstruction_PRECAST_CONCRETE, IfcPileConstruction_PREFAB_STEEL, IfcPileConstruction_USERDEFINED, IfcPileConstruction_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPileTypeEnum {
typedef enum {IfcPileType_COHESION, IfcPileType_FRICTION, IfcPileType_SUPPORT, IfcPileType_USERDEFINED, IfcPileType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPipeFittingTypeEnum {
typedef enum {IfcPipeFittingType_BEND, IfcPipeFittingType_CONNECTOR, IfcPipeFittingType_ENTRY, IfcPipeFittingType_EXIT, IfcPipeFittingType_JUNCTION, IfcPipeFittingType_OBSTRUCTION, IfcPipeFittingType_TRANSITION, IfcPipeFittingType_USERDEFINED, IfcPipeFittingType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPipeSegmentTypeEnum {
typedef enum {IfcPipeSegmentType_FLEXIBLESEGMENT, IfcPipeSegmentType_RIGIDSEGMENT, IfcPipeSegmentType_GUTTER, IfcPipeSegmentType_SPOOL, IfcPipeSegmentType_USERDEFINED, IfcPipeSegmentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPlateTypeEnum {
typedef enum {IfcPlateType_CURTAIN_PANEL, IfcPlateType_SHEET, IfcPlateType_USERDEFINED, IfcPlateType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProcedureTypeEnum {
typedef enum {IfcProcedureType_ADVICE_CAUTION, IfcProcedureType_ADVICE_NOTE, IfcProcedureType_ADVICE_WARNING, IfcProcedureType_CALIBRATION, IfcProcedureType_DIAGNOSTIC, IfcProcedureType_SHUTDOWN, IfcProcedureType_STARTUP, IfcProcedureType_USERDEFINED, IfcProcedureType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProfileTypeEnum {
typedef enum {IfcProfileType_CURVE, IfcProfileType_AREA} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProjectOrderRecordTypeEnum {

typedef enum {IfcProjectOrderRecordType_CHANGE, IfcProjectOrderRecordType_MAINTENANCE, IfcProjectOrderRecordType_MOVE, IfcProjectOrderRecordType_PURCHASE, IfcProjectOrderRecordType_WORK, IfcProjectOrderRecordType_USERDEFINED, IfcProjectOrderRecordType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProjectOrderTypeEnum {
typedef enum {IfcProjectOrderType_CHANGEORDER, IfcProjectOrderType_MAINTENANCEWORKORDER, IfcProjectOrderType_MOVEORDER, IfcProjectOrderType_PURCHASEORDER, IfcProjectOrderType_WORKORDER, IfcProjectOrderType_USERDEFINED, IfcProjectOrderType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProjectedOrTrueLengthEnum {
typedef enum {IfcProjectedOrTrueLength_PROJECTED_LENGTH, IfcProjectedOrTrueLength_TRUE_LENGTH} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPropertySourceEnum {

typedef enum {IfcPropertySource_DESIGN, IfcPropertySource_DESIGNMAXIMUM, IfcPropertySource_DESIGNMINIMUM, IfcPropertySource_SIMULATED, IfcPropertySource_ASBUILT, IfcPropertySource_COMMISSIONING, IfcPropertySource_MEASURED, IfcPropertySource_USERDEFINED, IfcPropertySource_NOTKNOWN} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProtectiveDeviceTypeEnum {
typedef enum {IfcProtectiveDeviceType_FUSEDISCONNECTOR, IfcProtectiveDeviceType_CIRCUITBREAKER, IfcProtectiveDeviceType_EARTHFAILUREDEVICE, IfcProtectiveDeviceType_RESIDUALCURRENTCIRCUITBREAKER, IfcProtectiveDeviceType_RESIDUALCURRENTSWITCH, IfcProtectiveDeviceType_VARISTOR, IfcProtectiveDeviceType_USERDEFINED, IfcProtectiveDeviceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPumpTypeEnum {
typedef enum {IfcPumpType_CIRCULATOR, IfcPumpType_ENDSUCTION, IfcPumpType_SPLITCASE, IfcPumpType_VERTICALINLINE, IfcPumpType_VERTICALTURBINE, IfcPumpType_USERDEFINED, IfcPumpType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRailingTypeEnum {
typedef enum {IfcRailingType_HANDRAIL, IfcRailingType_GUARDRAIL, IfcRailingType_BALUSTRADE, IfcRailingType_USERDEFINED, IfcRailingType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRampFlightTypeEnum {
typedef enum {IfcRampFlightType_STRAIGHT, IfcRampFlightType_SPIRAL, IfcRampFlightType_USERDEFINED, IfcRampFlightType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRampTypeEnum {
typedef enum {IfcRampType_STRAIGHT_RUN_RAMP, IfcRampType_TWO_STRAIGHT_RUN_RAMP, IfcRampType_QUARTER_TURN_RAMP, IfcRampType_TWO_QUARTER_TURN_RAMP, IfcRampType_HALF_TURN_RAMP, IfcRampType_SPIRAL_RAMP, IfcRampType_USERDEFINED, IfcRampType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcReflectanceMethodEnum {
typedef enum {IfcReflectanceMethod_BLINN, IfcReflectanceMethod_FLAT, IfcReflectanceMethod_GLASS, IfcReflectanceMethod_MATT, IfcReflectanceMethod_METAL, IfcReflectanceMethod_MIRROR, IfcReflectanceMethod_PHONG, IfcReflectanceMethod_PLASTIC, IfcReflectanceMethod_STRAUSS, IfcReflectanceMethod_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcReinforcingBarRoleEnum {
typedef enum {IfcReinforcingBarRole_MAIN, IfcReinforcingBarRole_SHEAR, IfcReinforcingBarRole_LIGATURE, IfcReinforcingBarRole_STUD, IfcReinforcingBarRole_PUNCHING, IfcReinforcingBarRole_EDGE, IfcReinforcingBarRole_RING, IfcReinforcingBarRole_USERDEFINED, IfcReinforcingBarRole_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcReinforcingBarSurfaceEnum {
typedef enum {IfcReinforcingBarSurface_PLAIN, IfcReinforcingBarSurface_TEXTURED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcResourceConsumptionEnum {
typedef enum {IfcResourceConsumption_CONSUMED, IfcResourceConsumption_PARTIALLYCONSUMED, IfcResourceConsumption_NOTCONSUMED, IfcResourceConsumption_OCCUPIED, IfcResourceConsumption_PARTIALLYOCCUPIED, IfcResourceConsumption_NOTOCCUPIED, IfcResourceConsumption_USERDEFINED, IfcResourceConsumption_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRibPlateDirectionEnum {

typedef enum {IfcRibPlateDirection_DIRECTION_X, IfcRibPlateDirection_DIRECTION_Y} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRoleEnum {
typedef enum {IfcRole_SUPPLIER, IfcRole_MANUFACTURER, IfcRole_CONTRACTOR, IfcRole_SUBCONTRACTOR, IfcRole_ARCHITECT, IfcRole_STRUCTURALENGINEER, IfcRole_COSTENGINEER, IfcRole_CLIENT, IfcRole_BUILDINGOWNER, IfcRole_BUILDINGOPERATOR, IfcRole_MECHANICALENGINEER, IfcRole_ELECTRICALENGINEER, IfcRole_PROJECTMANAGER, IfcRole_FACILITIESMANAGER, IfcRole_CIVILENGINEER, IfcRole_COMISSIONINGENGINEER, IfcRole_ENGINEER, IfcRole_OWNER, IfcRole_CONSULTANT, IfcRole_CONSTRUCTIONMANAGER, IfcRole_FIELDCONSTRUCTIONMANAGER, IfcRole_RESELLER, IfcRole_USERDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRoofTypeEnum {
typedef enum {IfcRoofType_FLAT_ROOF, IfcRoofType_SHED_ROOF, IfcRoofType_GABLE_ROOF, IfcRoofType_HIP_ROOF, IfcRoofType_HIPPED_GABLE_ROOF, IfcRoofType_GAMBREL_ROOF, IfcRoofType_MANSARD_ROOF, IfcRoofType_BARREL_ROOF, IfcRoofType_RAINBOW_ROOF, IfcRoofType_BUTTERFLY_ROOF, IfcRoofType_PAVILION_ROOF, IfcRoofType_DOME_ROOF, IfcRoofType_FREEFORM, IfcRoofType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSIPrefix {
typedef enum {IfcSIPrefix_EXA, IfcSIPrefix_PETA, IfcSIPrefix_TERA, IfcSIPrefix_GIGA, IfcSIPrefix_MEGA, IfcSIPrefix_KILO, IfcSIPrefix_HECTO, IfcSIPrefix_DECA, IfcSIPrefix_DECI, IfcSIPrefix_CENTI, IfcSIPrefix_MILLI, IfcSIPrefix_MICRO, IfcSIPrefix_NANO, IfcSIPrefix_PICO, IfcSIPrefix_FEMTO, IfcSIPrefix_ATTO} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSIUnitName {
typedef enum {IfcSIUnitName_AMPERE, IfcSIUnitName_BECQUEREL, IfcSIUnitName_CANDELA, IfcSIUnitName_COULOMB, IfcSIUnitName_CUBIC_METRE, IfcSIUnitName_DEGREE_CELSIUS, IfcSIUnitName_FARAD, IfcSIUnitName_GRAM, IfcSIUnitName_GRAY, IfcSIUnitName_HENRY, IfcSIUnitName_HERTZ, IfcSIUnitName_JOULE, IfcSIUnitName_KELVIN, IfcSIUnitName_LUMEN, IfcSIUnitName_LUX, IfcSIUnitName_METRE, IfcSIUnitName_MOLE, IfcSIUnitName_NEWTON, IfcSIUnitName_OHM, IfcSIUnitName_PASCAL, IfcSIUnitName_RADIAN, IfcSIUnitName_SECOND, IfcSIUnitName_SIEMENS, IfcSIUnitName_SIEVERT, IfcSIUnitName_SQUARE_METRE, IfcSIUnitName_STERADIAN, IfcSIUnitName_TESLA, IfcSIUnitName_VOLT, IfcSIUnitName_WATT, IfcSIUnitName_WEBER} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSanitaryTerminalTypeEnum {
typedef enum {IfcSanitaryTerminalType_BATH, IfcSanitaryTerminalType_BIDET, IfcSanitaryTerminalType_CISTERN, IfcSanitaryTerminalType_SHOWER, IfcSanitaryTerminalType_SINK, IfcSanitaryTerminalType_SANITARYFOUNTAIN, IfcSanitaryTerminalType_TOILETPAN, IfcSanitaryTerminalType_URINAL, IfcSanitaryTerminalType_WASHHANDBASIN, IfcSanitaryTerminalType_WCSEAT, IfcSanitaryTerminalType_USERDEFINED, IfcSanitaryTerminalType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSectionTypeEnum {
typedef enum {IfcSectionType_UNIFORM, IfcSectionType_TAPERED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSensorTypeEnum {
typedef enum {IfcSensorType_CO2SENSOR, IfcSensorType_FIRESENSOR, IfcSensorType_FLOWSENSOR, IfcSensorType_GASSENSOR, IfcSensorType_HEATSENSOR, IfcSensorType_HUMIDITYSENSOR, IfcSensorType_LIGHTSENSOR, IfcSensorType_MOISTURESENSOR, IfcSensorType_MOVEMENTSENSOR, IfcSensorType_PRESSURESENSOR, IfcSensorType_SMOKESENSOR, IfcSensorType_SOUNDSENSOR, IfcSensorType_TEMPERATURESENSOR, IfcSensorType_USERDEFINED, IfcSensorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSequenceEnum {
typedef enum {IfcSequence_START_START, IfcSequence_START_FINISH, IfcSequence_FINISH_START, IfcSequence_FINISH_FINISH, IfcSequence_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcServiceLifeFactorTypeEnum {

typedef enum {IfcServiceLifeFactorType_A_QUALITYOFCOMPONENTS, IfcServiceLifeFactorType_B_DESIGNLEVEL, IfcServiceLifeFactorType_C_WORKEXECUTIONLEVEL, IfcServiceLifeFactorType_D_INDOORENVIRONMENT, IfcServiceLifeFactorType_E_OUTDOORENVIRONMENT, IfcServiceLifeFactorType_F_INUSECONDITIONS, IfcServiceLifeFactorType_G_MAINTENANCELEVEL, IfcServiceLifeFactorType_USERDEFINED, IfcServiceLifeFactorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcServiceLifeTypeEnum {

typedef enum {IfcServiceLifeType_ACTUALSERVICELIFE, IfcServiceLifeType_EXPECTEDSERVICELIFE, IfcServiceLifeType_OPTIMISTICREFERENCESERVICELIFE, IfcServiceLifeType_PESSIMISTICREFERENCESERVICELIFE, IfcServiceLifeType_REFERENCESERVICELIFE} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSlabTypeEnum {
typedef enum {IfcSlabType_FLOOR, IfcSlabType_ROOF, IfcSlabType_LANDING, IfcSlabType_BASESLAB, IfcSlabType_USERDEFINED, IfcSlabType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSoundScaleEnum {

typedef enum {IfcSoundScale_DBA, IfcSoundScale_DBB, IfcSoundScale_DBC, IfcSoundScale_NC, IfcSoundScale_NR, IfcSoundScale_USERDEFINED, IfcSoundScale_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSpaceHeaterTypeEnum {
typedef enum {IfcSpaceHeaterType_SECTIONALRADIATOR, IfcSpaceHeaterType_PANELRADIATOR, IfcSpaceHeaterType_TUBULARRADIATOR, IfcSpaceHeaterType_CONVECTOR, IfcSpaceHeaterType_BASEBOARDHEATER, IfcSpaceHeaterType_FINNEDTUBEUNIT, IfcSpaceHeaterType_UNITHEATER, IfcSpaceHeaterType_USERDEFINED, IfcSpaceHeaterType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSpaceTypeEnum {
typedef enum {IfcSpaceType_USERDEFINED, IfcSpaceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStackTerminalTypeEnum {
typedef enum {IfcStackTerminalType_BIRDCAGE, IfcStackTerminalType_COWL, IfcStackTerminalType_RAINWATERHOPPER, IfcStackTerminalType_USERDEFINED, IfcStackTerminalType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStairFlightTypeEnum {
typedef enum {IfcStairFlightType_STRAIGHT, IfcStairFlightType_WINDER, IfcStairFlightType_SPIRAL, IfcStairFlightType_CURVED, IfcStairFlightType_FREEFORM, IfcStairFlightType_USERDEFINED, IfcStairFlightType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStairTypeEnum {
typedef enum {IfcStairType_STRAIGHT_RUN_STAIR, IfcStairType_TWO_STRAIGHT_RUN_STAIR, IfcStairType_QUARTER_WINDING_STAIR, IfcStairType_QUARTER_TURN_STAIR, IfcStairType_HALF_WINDING_STAIR, IfcStairType_HALF_TURN_STAIR, IfcStairType_TWO_QUARTER_WINDING_STAIR, IfcStairType_TWO_QUARTER_TURN_STAIR, IfcStairType_THREE_QUARTER_WINDING_STAIR, IfcStairType_THREE_QUARTER_TURN_STAIR, IfcStairType_SPIRAL_STAIR, IfcStairType_DOUBLE_RETURN_STAIR, IfcStairType_CURVED_RUN_STAIR, IfcStairType_TWO_CURVED_RUN_STAIR, IfcStairType_USERDEFINED, IfcStairType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStateEnum {
typedef enum {IfcState_READWRITE, IfcState_READONLY, IfcState_LOCKED, IfcState_READWRITELOCKED, IfcState_READONLYLOCKED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStructuralCurveTypeEnum {

typedef enum {IfcStructuralCurveType_RIGID_JOINED_MEMBER, IfcStructuralCurveType_PIN_JOINED_MEMBER, IfcStructuralCurveType_CABLE, IfcStructuralCurveType_TENSION_MEMBER, IfcStructuralCurveType_COMPRESSION_MEMBER, IfcStructuralCurveType_USERDEFINED, IfcStructuralCurveType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStructuralSurfaceTypeEnum {

typedef enum {IfcStructuralSurfaceType_BENDING_ELEMENT, IfcStructuralSurfaceType_MEMBRANE_ELEMENT, IfcStructuralSurfaceType_SHELL, IfcStructuralSurfaceType_USERDEFINED, IfcStructuralSurfaceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSurfaceSide {
typedef enum {IfcSurfaceSide_POSITIVE, IfcSurfaceSide_NEGATIVE, IfcSurfaceSide_BOTH} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSurfaceTextureEnum {

typedef enum {IfcSurfaceTexture_BUMP, IfcSurfaceTexture_OPACITY, IfcSurfaceTexture_REFLECTION, IfcSurfaceTexture_SELFILLUMINATION, IfcSurfaceTexture_SHININESS, IfcSurfaceTexture_SPECULAR, IfcSurfaceTexture_TEXTURE, IfcSurfaceTexture_TRANSPARENCYMAP, IfcSurfaceTexture_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSwitchingDeviceTypeEnum {
typedef enum {IfcSwitchingDeviceType_CONTACTOR, IfcSwitchingDeviceType_EMERGENCYSTOP, IfcSwitchingDeviceType_STARTER, IfcSwitchingDeviceType_SWITCHDISCONNECTOR, IfcSwitchingDeviceType_TOGGLESWITCH, IfcSwitchingDeviceType_USERDEFINED, IfcSwitchingDeviceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTankTypeEnum {
typedef enum {IfcTankType_PREFORMED, IfcTankType_SECTIONAL, IfcTankType_EXPANSION, IfcTankType_PRESSUREVESSEL, IfcTankType_USERDEFINED, IfcTankType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTendonTypeEnum {

typedef enum {IfcTendonType_STRAND, IfcTendonType_WIRE, IfcTendonType_BAR, IfcTendonType_COATED, IfcTendonType_USERDEFINED, IfcTendonType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTextPath {
typedef enum {IfcTextPath_LEFT, IfcTextPath_RIGHT, IfcTextPath_UP, IfcTextPath_DOWN} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcThermalLoadSourceEnum {

typedef enum {IfcThermalLoadSource_PEOPLE, IfcThermalLoadSource_LIGHTING, IfcThermalLoadSource_EQUIPMENT, IfcThermalLoadSource_VENTILATIONINDOORAIR, IfcThermalLoadSource_VENTILATIONOUTSIDEAIR, IfcThermalLoadSource_RECIRCULATEDAIR, IfcThermalLoadSource_EXHAUSTAIR, IfcThermalLoadSource_AIREXCHANGERATE, IfcThermalLoadSource_DRYBULBTEMPERATURE, IfcThermalLoadSource_RELATIVEHUMIDITY, IfcThermalLoadSource_INFILTRATION, IfcThermalLoadSource_USERDEFINED, IfcThermalLoadSource_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcThermalLoadTypeEnum {

typedef enum {IfcThermalLoadType_SENSIBLE, IfcThermalLoadType_LATENT, IfcThermalLoadType_RADIANT, IfcThermalLoadType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTimeSeriesDataTypeEnum {
typedef enum {IfcTimeSeriesDataType_CONTINUOUS, IfcTimeSeriesDataType_DISCRETE, IfcTimeSeriesDataType_DISCRETEBINARY, IfcTimeSeriesDataType_PIECEWISEBINARY, IfcTimeSeriesDataType_PIECEWISECONSTANT, IfcTimeSeriesDataType_PIECEWISECONTINUOUS, IfcTimeSeriesDataType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTimeSeriesScheduleTypeEnum {

typedef enum {IfcTimeSeriesScheduleType_ANNUAL, IfcTimeSeriesScheduleType_MONTHLY, IfcTimeSeriesScheduleType_WEEKLY, IfcTimeSeriesScheduleType_DAILY, IfcTimeSeriesScheduleType_USERDEFINED, IfcTimeSeriesScheduleType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTransformerTypeEnum {
typedef enum {IfcTransformerType_CURRENT, IfcTransformerType_FREQUENCY, IfcTransformerType_VOLTAGE, IfcTransformerType_USERDEFINED, IfcTransformerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTransitionCode {
typedef enum {IfcTransitionCode_DISCONTINUOUS, IfcTransitionCode_CONTINUOUS, IfcTransitionCode_CONTSAMEGRADIENT, IfcTransitionCode_CONTSAMEGRADIENTSAMECURVATURE} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTransportElementTypeEnum {
typedef enum {IfcTransportElementType_ELEVATOR, IfcTransportElementType_ESCALATOR, IfcTransportElementType_MOVINGWALKWAY, IfcTransportElementType_USERDEFINED, IfcTransportElementType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTrimmingPreference {
typedef enum {IfcTrimmingPreference_CARTESIAN, IfcTrimmingPreference_PARAMETER, IfcTrimmingPreference_UNSPECIFIED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTubeBundleTypeEnum {
typedef enum {IfcTubeBundleType_FINNED, IfcTubeBundleType_USERDEFINED, IfcTubeBundleType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcUnitEnum {
typedef enum {IfcUnit_ABSORBEDDOSEUNIT, IfcUnit_AMOUNTOFSUBSTANCEUNIT, IfcUnit_AREAUNIT, IfcUnit_DOSEEQUIVALENTUNIT, IfcUnit_ELECTRICCAPACITANCEUNIT, IfcUnit_ELECTRICCHARGEUNIT, IfcUnit_ELECTRICCONDUCTANCEUNIT, IfcUnit_ELECTRICCURRENTUNIT, IfcUnit_ELECTRICRESISTANCEUNIT, IfcUnit_ELECTRICVOLTAGEUNIT, IfcUnit_ENERGYUNIT, IfcUnit_FORCEUNIT, IfcUnit_FREQUENCYUNIT, IfcUnit_ILLUMINANCEUNIT, IfcUnit_INDUCTANCEUNIT, IfcUnit_LENGTHUNIT, IfcUnit_LUMINOUSFLUXUNIT, IfcUnit_LUMINOUSINTENSITYUNIT, IfcUnit_MAGNETICFLUXDENSITYUNIT, IfcUnit_MAGNETICFLUXUNIT, IfcUnit_MASSUNIT, IfcUnit_PLANEANGLEUNIT, IfcUnit_POWERUNIT, IfcUnit_PRESSUREUNIT, IfcUnit_RADIOACTIVITYUNIT, IfcUnit_SOLIDANGLEUNIT, IfcUnit_THERMODYNAMICTEMPERATUREUNIT, IfcUnit_TIMEUNIT, IfcUnit_VOLUMEUNIT, IfcUnit_USERDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcUnitaryEquipmentTypeEnum {
typedef enum {IfcUnitaryEquipmentType_AIRHANDLER, IfcUnitaryEquipmentType_AIRCONDITIONINGUNIT, IfcUnitaryEquipmentType_SPLITSYSTEM, IfcUnitaryEquipmentType_ROOFTOPUNIT, IfcUnitaryEquipmentType_USERDEFINED, IfcUnitaryEquipmentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcValveTypeEnum {
typedef enum {IfcValveType_AIRRELEASE, IfcValveType_ANTIVACUUM, IfcValveType_CHANGEOVER, IfcValveType_CHECK, IfcValveType_COMMISSIONING, IfcValveType_DIVERTING, IfcValveType_DRAWOFFCOCK, IfcValveType_DOUBLECHECK, IfcValveType_DOUBLEREGULATING, IfcValveType_FAUCET, IfcValveType_FLUSHING, IfcValveType_GASCOCK, IfcValveType_GASTAP, IfcValveType_ISOLATING, IfcValveType_MIXING, IfcValveType_PRESSUREREDUCING, IfcValveType_PRESSURERELIEF, IfcValveType_REGULATING, IfcValveType_SAFETYCUTOFF, IfcValveType_STEAMTRAP, IfcValveType_STOPCOCK, IfcValveType_USERDEFINED, IfcValveType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcVibrationIsolatorTypeEnum {
typedef enum {IfcVibrationIsolatorType_COMPRESSION, IfcVibrationIsolatorType_SPRING, IfcVibrationIsolatorType_USERDEFINED, IfcVibrationIsolatorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWallTypeEnum {
typedef enum {IfcWallType_STANDARD, IfcWallType_POLYGONAL, IfcWallType_SHEAR, IfcWallType_ELEMENTEDWALL, IfcWallType_PLUMBINGWALL, IfcWallType_USERDEFINED, IfcWallType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWasteTerminalTypeEnum {
typedef enum {IfcWasteTerminalType_FLOORTRAP, IfcWasteTerminalType_FLOORWASTE, IfcWasteTerminalType_GULLYSUMP, IfcWasteTerminalType_GULLYTRAP, IfcWasteTerminalType_GREASEINTERCEPTOR, IfcWasteTerminalType_OILINTERCEPTOR, IfcWasteTerminalType_PETROLINTERCEPTOR, IfcWasteTerminalType_ROOFDRAIN, IfcWasteTerminalType_WASTEDISPOSALUNIT, IfcWasteTerminalType_WASTETRAP, IfcWasteTerminalType_USERDEFINED, IfcWasteTerminalType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWindowPanelOperationEnum {
typedef enum {IfcWindowPanelOperation_SIDEHUNGRIGHTHAND, IfcWindowPanelOperation_SIDEHUNGLEFTHAND, IfcWindowPanelOperation_TILTANDTURNRIGHTHAND, IfcWindowPanelOperation_TILTANDTURNLEFTHAND, IfcWindowPanelOperation_TOPHUNG, IfcWindowPanelOperation_BOTTOMHUNG, IfcWindowPanelOperation_PIVOTHORIZONTAL, IfcWindowPanelOperation_PIVOTVERTICAL, IfcWindowPanelOperation_SLIDINGHORIZONTAL, IfcWindowPanelOperation_SLIDINGVERTICAL, IfcWindowPanelOperation_REMOVABLECASEMENT, IfcWindowPanelOperation_FIXEDCASEMENT, IfcWindowPanelOperation_OTHEROPERATION, IfcWindowPanelOperation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWindowPanelPositionEnum {
typedef enum {IfcWindowPanelPosition_LEFT, IfcWindowPanelPosition_MIDDLE, IfcWindowPanelPosition_RIGHT, IfcWindowPanelPosition_BOTTOM, IfcWindowPanelPosition_TOP, IfcWindowPanelPosition_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWindowStyleConstructionEnum {
typedef enum {IfcWindowStyleConstruction_ALUMINIUM, IfcWindowStyleConstruction_HIGH_GRADE_STEEL, IfcWindowStyleConstruction_STEEL, IfcWindowStyleConstruction_WOOD, IfcWindowStyleConstruction_ALUMINIUM_WOOD, IfcWindowStyleConstruction_PLASTIC, IfcWindowStyleConstruction_OTHER_CONSTRUCTION, IfcWindowStyleConstruction_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWindowStyleOperationEnum {
typedef enum {IfcWindowStyleOperation_SINGLE_PANEL, IfcWindowStyleOperation_DOUBLE_PANEL_VERTICAL, IfcWindowStyleOperation_DOUBLE_PANEL_HORIZONTAL, IfcWindowStyleOperation_TRIPLE_PANEL_VERTICAL, IfcWindowStyleOperation_TRIPLE_PANEL_BOTTOM, IfcWindowStyleOperation_TRIPLE_PANEL_TOP, IfcWindowStyleOperation_TRIPLE_PANEL_LEFT, IfcWindowStyleOperation_TRIPLE_PANEL_RIGHT, IfcWindowStyleOperation_TRIPLE_PANEL_HORIZONTAL, IfcWindowStyleOperation_USERDEFINED, IfcWindowStyleOperation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWorkControlTypeEnum {

typedef enum {IfcWorkControlType_ACTUAL, IfcWorkControlType_BASELINE, IfcWorkControlType_PLANNED, IfcWorkControlType_USERDEFINED, IfcWorkControlType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
class IFC_PARSE_API IfcAbsorbedDoseMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcAbsorbedDoseMeasure (IfcEntityInstanceData* e);
    IfcAbsorbedDoseMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcAccelerationMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcAccelerationMeasure (IfcEntityInstanceData* e);
    IfcAccelerationMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcAmountOfSubstanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcAmountOfSubstanceMeasure (IfcEntityInstanceData* e);
    IfcAmountOfSubstanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcAngularVelocityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcAngularVelocityMeasure (IfcEntityInstanceData* e);
    IfcAngularVelocityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcAreaMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcAreaMeasure (IfcEntityInstanceData* e);
    IfcAreaMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcBoolean : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcBoolean (IfcEntityInstanceData* e);
    IfcBoolean (bool v);
    operator bool() const;
};
class IFC_PARSE_API IfcComplexNumber : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcComplexNumber (IfcEntityInstanceData* e);
    IfcComplexNumber (std::vector< double > /*[1:2]*/ v);
    operator std::vector< double > /*[1:2]*/() const;
};
class IFC_PARSE_API IfcCompoundPlaneAngleMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcCompoundPlaneAngleMeasure (IfcEntityInstanceData* e);
    IfcCompoundPlaneAngleMeasure (std::vector< int > /*[3:4]*/ v);
    operator std::vector< int > /*[3:4]*/() const;
};
class IFC_PARSE_API IfcContextDependentMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcContextDependentMeasure (IfcEntityInstanceData* e);
    IfcContextDependentMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcCountMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcCountMeasure (IfcEntityInstanceData* e);
    IfcCountMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcCurvatureMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcCurvatureMeasure (IfcEntityInstanceData* e);
    IfcCurvatureMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcDayInMonthNumber : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDayInMonthNumber (IfcEntityInstanceData* e);
    IfcDayInMonthNumber (int v);
    operator int() const;
};

class IFC_PARSE_API IfcDaylightSavingHour : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDaylightSavingHour (IfcEntityInstanceData* e);
    IfcDaylightSavingHour (int v);
    operator int() const;
};
class IFC_PARSE_API IfcDescriptiveMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDescriptiveMeasure (IfcEntityInstanceData* e);
    IfcDescriptiveMeasure (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcDimensionCount : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDimensionCount (IfcEntityInstanceData* e);
    IfcDimensionCount (int v);
    operator int() const;
};
class IFC_PARSE_API IfcDoseEquivalentMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDoseEquivalentMeasure (IfcEntityInstanceData* e);
    IfcDoseEquivalentMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcDynamicViscosityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDynamicViscosityMeasure (IfcEntityInstanceData* e);
    IfcDynamicViscosityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricCapacitanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricCapacitanceMeasure (IfcEntityInstanceData* e);
    IfcElectricCapacitanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricChargeMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricChargeMeasure (IfcEntityInstanceData* e);
    IfcElectricChargeMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricConductanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricConductanceMeasure (IfcEntityInstanceData* e);
    IfcElectricConductanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricCurrentMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricCurrentMeasure (IfcEntityInstanceData* e);
    IfcElectricCurrentMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricResistanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricResistanceMeasure (IfcEntityInstanceData* e);
    IfcElectricResistanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricVoltageMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricVoltageMeasure (IfcEntityInstanceData* e);
    IfcElectricVoltageMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcEnergyMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcEnergyMeasure (IfcEntityInstanceData* e);
    IfcEnergyMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcFontStyle : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcFontStyle (IfcEntityInstanceData* e);
    IfcFontStyle (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcFontVariant : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcFontVariant (IfcEntityInstanceData* e);
    IfcFontVariant (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcFontWeight : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcFontWeight (IfcEntityInstanceData* e);
    IfcFontWeight (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcForceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcForceMeasure (IfcEntityInstanceData* e);
    IfcForceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcFrequencyMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcFrequencyMeasure (IfcEntityInstanceData* e);
    IfcFrequencyMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcGloballyUniqueId : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcGloballyUniqueId (IfcEntityInstanceData* e);
    IfcGloballyUniqueId (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcHeatFluxDensityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcHeatFluxDensityMeasure (IfcEntityInstanceData* e);
    IfcHeatFluxDensityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcHeatingValueMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcHeatingValueMeasure (IfcEntityInstanceData* e);
    IfcHeatingValueMeasure (double v);
    operator double() const;
};

class IFC_PARSE_API IfcHourInDay : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcHourInDay (IfcEntityInstanceData* e);
    IfcHourInDay (int v);
    operator int() const;
};
class IFC_PARSE_API IfcIdentifier : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcIdentifier (IfcEntityInstanceData* e);
    IfcIdentifier (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcIlluminanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcIlluminanceMeasure (IfcEntityInstanceData* e);
    IfcIlluminanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcInductanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcInductanceMeasure (IfcEntityInstanceData* e);
    IfcInductanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcInteger : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcInteger (IfcEntityInstanceData* e);
    IfcInteger (int v);
    operator int() const;
};
class IFC_PARSE_API IfcIntegerCountRateMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcIntegerCountRateMeasure (IfcEntityInstanceData* e);
    IfcIntegerCountRateMeasure (int v);
    operator int() const;
};
class IFC_PARSE_API IfcIonConcentrationMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcIonConcentrationMeasure (IfcEntityInstanceData* e);
    IfcIonConcentrationMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcIsothermalMoistureCapacityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcIsothermalMoistureCapacityMeasure (IfcEntityInstanceData* e);
    IfcIsothermalMoistureCapacityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcKinematicViscosityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcKinematicViscosityMeasure (IfcEntityInstanceData* e);
    IfcKinematicViscosityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLabel : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLabel (IfcEntityInstanceData* e);
    IfcLabel (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcLengthMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLengthMeasure (IfcEntityInstanceData* e);
    IfcLengthMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLinearForceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLinearForceMeasure (IfcEntityInstanceData* e);
    IfcLinearForceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLinearMomentMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLinearMomentMeasure (IfcEntityInstanceData* e);
    IfcLinearMomentMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLinearStiffnessMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLinearStiffnessMeasure (IfcEntityInstanceData* e);
    IfcLinearStiffnessMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLinearVelocityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLinearVelocityMeasure (IfcEntityInstanceData* e);
    IfcLinearVelocityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLogical : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLogical (IfcEntityInstanceData* e);
    IfcLogical (bool v);
    operator bool() const;
};
class IFC_PARSE_API IfcLuminousFluxMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLuminousFluxMeasure (IfcEntityInstanceData* e);
    IfcLuminousFluxMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLuminousIntensityDistributionMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLuminousIntensityDistributionMeasure (IfcEntityInstanceData* e);
    IfcLuminousIntensityDistributionMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLuminousIntensityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLuminousIntensityMeasure (IfcEntityInstanceData* e);
    IfcLuminousIntensityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMagneticFluxDensityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMagneticFluxDensityMeasure (IfcEntityInstanceData* e);
    IfcMagneticFluxDensityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMagneticFluxMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMagneticFluxMeasure (IfcEntityInstanceData* e);
    IfcMagneticFluxMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMassDensityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMassDensityMeasure (IfcEntityInstanceData* e);
    IfcMassDensityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMassFlowRateMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMassFlowRateMeasure (IfcEntityInstanceData* e);
    IfcMassFlowRateMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMassMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMassMeasure (IfcEntityInstanceData* e);
    IfcMassMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMassPerLengthMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMassPerLengthMeasure (IfcEntityInstanceData* e);
    IfcMassPerLengthMeasure (double v);
    operator double() const;
};

class IFC_PARSE_API IfcMinuteInHour : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMinuteInHour (IfcEntityInstanceData* e);
    IfcMinuteInHour (int v);
    operator int() const;
};
class IFC_PARSE_API IfcModulusOfElasticityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcModulusOfElasticityMeasure (IfcEntityInstanceData* e);
    IfcModulusOfElasticityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcModulusOfLinearSubgradeReactionMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcModulusOfLinearSubgradeReactionMeasure (IfcEntityInstanceData* e);
    IfcModulusOfLinearSubgradeReactionMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcModulusOfRotationalSubgradeReactionMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcModulusOfRotationalSubgradeReactionMeasure (IfcEntityInstanceData* e);
    IfcModulusOfRotationalSubgradeReactionMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcModulusOfSubgradeReactionMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcModulusOfSubgradeReactionMeasure (IfcEntityInstanceData* e);
    IfcModulusOfSubgradeReactionMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMoistureDiffusivityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMoistureDiffusivityMeasure (IfcEntityInstanceData* e);
    IfcMoistureDiffusivityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMolecularWeightMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMolecularWeightMeasure (IfcEntityInstanceData* e);
    IfcMolecularWeightMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMomentOfInertiaMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMomentOfInertiaMeasure (IfcEntityInstanceData* e);
    IfcMomentOfInertiaMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMonetaryMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMonetaryMeasure (IfcEntityInstanceData* e);
    IfcMonetaryMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMonthInYearNumber : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMonthInYearNumber (IfcEntityInstanceData* e);
    IfcMonthInYearNumber (int v);
    operator int() const;
};
class IFC_PARSE_API IfcNumericMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcNumericMeasure (IfcEntityInstanceData* e);
    IfcNumericMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPHMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPHMeasure (IfcEntityInstanceData* e);
    IfcPHMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcParameterValue : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcParameterValue (IfcEntityInstanceData* e);
    IfcParameterValue (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPlanarForceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPlanarForceMeasure (IfcEntityInstanceData* e);
    IfcPlanarForceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPlaneAngleMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPlaneAngleMeasure (IfcEntityInstanceData* e);
    IfcPlaneAngleMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPositiveLengthMeasure : public IfcLengthMeasure {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPositiveLengthMeasure (IfcEntityInstanceData* e);
    IfcPositiveLengthMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPositivePlaneAngleMeasure : public IfcPlaneAngleMeasure {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPositivePlaneAngleMeasure (IfcEntityInstanceData* e);
    IfcPositivePlaneAngleMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPowerMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPowerMeasure (IfcEntityInstanceData* e);
    IfcPowerMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPresentableText : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPresentableText (IfcEntityInstanceData* e);
    IfcPresentableText (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcPressureMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPressureMeasure (IfcEntityInstanceData* e);
    IfcPressureMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcRadioActivityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcRadioActivityMeasure (IfcEntityInstanceData* e);
    IfcRadioActivityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcRatioMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcRatioMeasure (IfcEntityInstanceData* e);
    IfcRatioMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcReal : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcReal (IfcEntityInstanceData* e);
    IfcReal (double v);
    operator double() const;
};
class IFC_PARSE_API IfcRotationalFrequencyMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcRotationalFrequencyMeasure (IfcEntityInstanceData* e);
    IfcRotationalFrequencyMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcRotationalMassMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcRotationalMassMeasure (IfcEntityInstanceData* e);
    IfcRotationalMassMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcRotationalStiffnessMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcRotationalStiffnessMeasure (IfcEntityInstanceData* e);
    IfcRotationalStiffnessMeasure (double v);
    operator double() const;
};

class IFC_PARSE_API IfcSecondInMinute : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSecondInMinute (IfcEntityInstanceData* e);
    IfcSecondInMinute (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSectionModulusMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSectionModulusMeasure (IfcEntityInstanceData* e);
    IfcSectionModulusMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSectionalAreaIntegralMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSectionalAreaIntegralMeasure (IfcEntityInstanceData* e);
    IfcSectionalAreaIntegralMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcShearModulusMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcShearModulusMeasure (IfcEntityInstanceData* e);
    IfcShearModulusMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSolidAngleMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSolidAngleMeasure (IfcEntityInstanceData* e);
    IfcSolidAngleMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSoundPowerMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSoundPowerMeasure (IfcEntityInstanceData* e);
    IfcSoundPowerMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSoundPressureMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSoundPressureMeasure (IfcEntityInstanceData* e);
    IfcSoundPressureMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSpecificHeatCapacityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSpecificHeatCapacityMeasure (IfcEntityInstanceData* e);
    IfcSpecificHeatCapacityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSpecularExponent : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSpecularExponent (IfcEntityInstanceData* e);
    IfcSpecularExponent (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSpecularRoughness : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSpecularRoughness (IfcEntityInstanceData* e);
    IfcSpecularRoughness (double v);
    operator double() const;
};
class IFC_PARSE_API IfcTemperatureGradientMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTemperatureGradientMeasure (IfcEntityInstanceData* e);
    IfcTemperatureGradientMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcText : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcText (IfcEntityInstanceData* e);
    IfcText (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcTextAlignment : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTextAlignment (IfcEntityInstanceData* e);
    IfcTextAlignment (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcTextDecoration : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTextDecoration (IfcEntityInstanceData* e);
    IfcTextDecoration (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcTextFontName : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTextFontName (IfcEntityInstanceData* e);
    IfcTextFontName (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcTextTransformation : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTextTransformation (IfcEntityInstanceData* e);
    IfcTextTransformation (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcThermalAdmittanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermalAdmittanceMeasure (IfcEntityInstanceData* e);
    IfcThermalAdmittanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcThermalConductivityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermalConductivityMeasure (IfcEntityInstanceData* e);
    IfcThermalConductivityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcThermalExpansionCoefficientMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermalExpansionCoefficientMeasure (IfcEntityInstanceData* e);
    IfcThermalExpansionCoefficientMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcThermalResistanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermalResistanceMeasure (IfcEntityInstanceData* e);
    IfcThermalResistanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcThermalTransmittanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermalTransmittanceMeasure (IfcEntityInstanceData* e);
    IfcThermalTransmittanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcThermodynamicTemperatureMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermodynamicTemperatureMeasure (IfcEntityInstanceData* e);
    IfcThermodynamicTemperatureMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcTimeMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTimeMeasure (IfcEntityInstanceData* e);
    IfcTimeMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcTimeStamp : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTimeStamp (IfcEntityInstanceData* e);
    IfcTimeStamp (int v);
    operator int() const;
};
class IFC_PARSE_API IfcTorqueMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTorqueMeasure (IfcEntityInstanceData* e);
    IfcTorqueMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcVaporPermeabilityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcVaporPermeabilityMeasure (IfcEntityInstanceData* e);
    IfcVaporPermeabilityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcVolumeMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcVolumeMeasure (IfcEntityInstanceData* e);
    IfcVolumeMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcVolumetricFlowRateMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcVolumetricFlowRateMeasure (IfcEntityInstanceData* e);
    IfcVolumetricFlowRateMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcWarpingConstantMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcWarpingConstantMeasure (IfcEntityInstanceData* e);
    IfcWarpingConstantMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcWarpingMomentMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcWarpingMomentMeasure (IfcEntityInstanceData* e);
    IfcWarpingMomentMeasure (double v);
    operator double() const;
};

class IFC_PARSE_API IfcYearNumber : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcYearNumber (IfcEntityInstanceData* e);
    IfcYearNumber (int v);
    operator int() const;
};
class IFC_PARSE_API IfcBoxAlignment : public IfcLabel {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcBoxAlignment (IfcEntityInstanceData* e);
    IfcBoxAlignment (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcNormalisedRatioMeasure : public IfcRatioMeasure {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcNormalisedRatioMeasure (IfcEntityInstanceData* e);
    IfcNormalisedRatioMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPositiveRatioMeasure : public IfcRatioMeasure {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPositiveRatioMeasure (IfcEntityInstanceData* e);
    IfcPositiveRatioMeasure (double v);
    operator double() const;
};


class IFC_PARSE_API IfcActorRole : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcRoleEnum::Value Role() const;
    void setRole(::Ifc2x3::IfcRoleEnum::Value v);
    bool hasUserDefinedRole() const;
    std::string UserDefinedRole() const;
    void setUserDefinedRole(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcActorRole (IfcEntityInstanceData* e);
    IfcActorRole (::Ifc2x3::IfcRoleEnum::Value v1_Role, boost::optional< std::string > v2_UserDefinedRole, boost::optional< std::string > v3_Description);
    typedef IfcTemplatedEntityList< IfcActorRole > list;
};
class IFC_PARSE_API IfcAddress : public IfcUtil::IfcBaseEntity {
public:
    bool hasPurpose() const;
    ::Ifc2x3::IfcAddressTypeEnum::Value Purpose() const;
    void setPurpose(::Ifc2x3::IfcAddressTypeEnum::Value v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasUserDefinedPurpose() const;
    std::string UserDefinedPurpose() const;
    void setUserDefinedPurpose(std::string v);
        IfcTemplatedEntityList< IfcPerson >::ptr OfPerson() const; // INVERSE IfcPerson::Addresses
    IfcTemplatedEntityList< IfcOrganization >::ptr OfOrganization() const; // INVERSE IfcOrganization::Addresses
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAddress (IfcEntityInstanceData* e);
    IfcAddress (boost::optional< ::Ifc2x3::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose);
    typedef IfcTemplatedEntityList< IfcAddress > list;
};
class IFC_PARSE_API IfcApplication : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcOrganization* ApplicationDeveloper() const;
    void setApplicationDeveloper(::Ifc2x3::IfcOrganization* v);
    std::string Version() const;
    void setVersion(std::string v);
    std::string ApplicationFullName() const;
    void setApplicationFullName(std::string v);
    std::string ApplicationIdentifier() const;
    void setApplicationIdentifier(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcApplication (IfcEntityInstanceData* e);
    IfcApplication (::Ifc2x3::IfcOrganization* v1_ApplicationDeveloper, std::string v2_Version, std::string v3_ApplicationFullName, std::string v4_ApplicationIdentifier);
    typedef IfcTemplatedEntityList< IfcApplication > list;
};
class IFC_PARSE_API IfcAppliedValue : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasAppliedValue() const;
    ::Ifc2x3::IfcAppliedValueSelect* AppliedValue() const;
    void setAppliedValue(::Ifc2x3::IfcAppliedValueSelect* v);
    bool hasUnitBasis() const;
    ::Ifc2x3::IfcMeasureWithUnit* UnitBasis() const;
    void setUnitBasis(::Ifc2x3::IfcMeasureWithUnit* v);
    bool hasApplicableDate() const;
    ::Ifc2x3::IfcDateTimeSelect* ApplicableDate() const;
    void setApplicableDate(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasFixedUntilDate() const;
    ::Ifc2x3::IfcDateTimeSelect* FixedUntilDate() const;
    void setFixedUntilDate(::Ifc2x3::IfcDateTimeSelect* v);
        IfcTemplatedEntityList< IfcReferencesValueDocument >::ptr ValuesReferenced() const; // INVERSE IfcReferencesValueDocument::ReferencingValues
    IfcTemplatedEntityList< IfcAppliedValueRelationship >::ptr ValueOfComponents() const; // INVERSE IfcAppliedValueRelationship::ComponentOfTotal
    IfcTemplatedEntityList< IfcAppliedValueRelationship >::ptr IsComponentIn() const; // INVERSE IfcAppliedValueRelationship::Components
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAppliedValue (IfcEntityInstanceData* e);
    IfcAppliedValue (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc2x3::IfcMeasureWithUnit* v4_UnitBasis, ::Ifc2x3::IfcDateTimeSelect* v5_ApplicableDate, ::Ifc2x3::IfcDateTimeSelect* v6_FixedUntilDate);
    typedef IfcTemplatedEntityList< IfcAppliedValue > list;
};
class IFC_PARSE_API IfcAppliedValueRelationship : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcAppliedValue* ComponentOfTotal() const;
    void setComponentOfTotal(::Ifc2x3::IfcAppliedValue* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcAppliedValue >::ptr Components() const;
    void setComponents(IfcTemplatedEntityList< ::Ifc2x3::IfcAppliedValue >::ptr v);
    ::Ifc2x3::IfcArithmeticOperatorEnum::Value ArithmeticOperator() const;
    void setArithmeticOperator(::Ifc2x3::IfcArithmeticOperatorEnum::Value v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAppliedValueRelationship (IfcEntityInstanceData* e);
    IfcAppliedValueRelationship (::Ifc2x3::IfcAppliedValue* v1_ComponentOfTotal, IfcTemplatedEntityList< ::Ifc2x3::IfcAppliedValue >::ptr v2_Components, ::Ifc2x3::IfcArithmeticOperatorEnum::Value v3_ArithmeticOperator, boost::optional< std::string > v4_Name, boost::optional< std::string > v5_Description);
    typedef IfcTemplatedEntityList< IfcAppliedValueRelationship > list;
};
class IFC_PARSE_API IfcApproval : public IfcUtil::IfcBaseEntity {
public:
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    ::Ifc2x3::IfcDateTimeSelect* ApprovalDateTime() const;
    void setApprovalDateTime(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasApprovalStatus() const;
    std::string ApprovalStatus() const;
    void setApprovalStatus(std::string v);
    bool hasApprovalLevel() const;
    std::string ApprovalLevel() const;
    void setApprovalLevel(std::string v);
    bool hasApprovalQualifier() const;
    std::string ApprovalQualifier() const;
    void setApprovalQualifier(std::string v);
    std::string Name() const;
    void setName(std::string v);
    std::string Identifier() const;
    void setIdentifier(std::string v);
        IfcTemplatedEntityList< IfcApprovalActorRelationship >::ptr Actors() const; // INVERSE IfcApprovalActorRelationship::Approval
    IfcTemplatedEntityList< IfcApprovalRelationship >::ptr IsRelatedWith() const; // INVERSE IfcApprovalRelationship::RelatedApproval
    IfcTemplatedEntityList< IfcApprovalRelationship >::ptr Relates() const; // INVERSE IfcApprovalRelationship::RelatingApproval
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcApproval (IfcEntityInstanceData* e);
    IfcApproval (boost::optional< std::string > v1_Description, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcApproval > list;
};

class IFC_PARSE_API IfcApprovalActorRelationship : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcActorSelect* Actor() const;
    void setActor(::Ifc2x3::IfcActorSelect* v);
    ::Ifc2x3::IfcApproval* Approval() const;
    void setApproval(::Ifc2x3::IfcApproval* v);
    ::Ifc2x3::IfcActorRole* Role() const;
    void setRole(::Ifc2x3::IfcActorRole* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcApprovalActorRelationship (IfcEntityInstanceData* e);
    IfcApprovalActorRelationship (::Ifc2x3::IfcActorSelect* v1_Actor, ::Ifc2x3::IfcApproval* v2_Approval, ::Ifc2x3::IfcActorRole* v3_Role);
    typedef IfcTemplatedEntityList< IfcApprovalActorRelationship > list;
};

class IFC_PARSE_API IfcApprovalPropertyRelationship : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr ApprovedProperties() const;
    void setApprovedProperties(IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v);
    ::Ifc2x3::IfcApproval* Approval() const;
    void setApproval(::Ifc2x3::IfcApproval* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcApprovalPropertyRelationship (IfcEntityInstanceData* e);
    IfcApprovalPropertyRelationship (IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v1_ApprovedProperties, ::Ifc2x3::IfcApproval* v2_Approval);
    typedef IfcTemplatedEntityList< IfcApprovalPropertyRelationship > list;
};
class IFC_PARSE_API IfcApprovalRelationship : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcApproval* RelatedApproval() const;
    void setRelatedApproval(::Ifc2x3::IfcApproval* v);
    ::Ifc2x3::IfcApproval* RelatingApproval() const;
    void setRelatingApproval(::Ifc2x3::IfcApproval* v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcApprovalRelationship (IfcEntityInstanceData* e);
    IfcApprovalRelationship (::Ifc2x3::IfcApproval* v1_RelatedApproval, ::Ifc2x3::IfcApproval* v2_RelatingApproval, boost::optional< std::string > v3_Description, std::string v4_Name);
    typedef IfcTemplatedEntityList< IfcApprovalRelationship > list;
};
class IFC_PARSE_API IfcBoundaryCondition : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundaryCondition (IfcEntityInstanceData* e);
    IfcBoundaryCondition (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcBoundaryCondition > list;
};
class IFC_PARSE_API IfcBoundaryEdgeCondition : public IfcBoundaryCondition {
public:
    bool hasLinearStiffnessByLengthX() const;
    double LinearStiffnessByLengthX() const;
    void setLinearStiffnessByLengthX(double v);
    bool hasLinearStiffnessByLengthY() const;
    double LinearStiffnessByLengthY() const;
    void setLinearStiffnessByLengthY(double v);
    bool hasLinearStiffnessByLengthZ() const;
    double LinearStiffnessByLengthZ() const;
    void setLinearStiffnessByLengthZ(double v);
    bool hasRotationalStiffnessByLengthX() const;
    double RotationalStiffnessByLengthX() const;
    void setRotationalStiffnessByLengthX(double v);
    bool hasRotationalStiffnessByLengthY() const;
    double RotationalStiffnessByLengthY() const;
    void setRotationalStiffnessByLengthY(double v);
    bool hasRotationalStiffnessByLengthZ() const;
    double RotationalStiffnessByLengthZ() const;
    void setRotationalStiffnessByLengthZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundaryEdgeCondition (IfcEntityInstanceData* e);
    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);
    typedef IfcTemplatedEntityList< IfcBoundaryEdgeCondition > list;
};
class IFC_PARSE_API IfcBoundaryFaceCondition : public IfcBoundaryCondition {
public:
    bool hasLinearStiffnessByAreaX() const;
    double LinearStiffnessByAreaX() const;
    void setLinearStiffnessByAreaX(double v);
    bool hasLinearStiffnessByAreaY() const;
    double LinearStiffnessByAreaY() const;
    void setLinearStiffnessByAreaY(double v);
    bool hasLinearStiffnessByAreaZ() const;
    double LinearStiffnessByAreaZ() const;
    void setLinearStiffnessByAreaZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundaryFaceCondition (IfcEntityInstanceData* e);
    IfcBoundaryFaceCondition (boost::optional< std::string > v1_Name, boost::optional< double > v2_LinearStiffnessByAreaX, boost::optional< double > v3_LinearStiffnessByAreaY, boost::optional< double > v4_LinearStiffnessByAreaZ);
    typedef IfcTemplatedEntityList< IfcBoundaryFaceCondition > list;
};
class IFC_PARSE_API IfcBoundaryNodeCondition : public IfcBoundaryCondition {
public:
    bool hasLinearStiffnessX() const;
    double LinearStiffnessX() const;
    void setLinearStiffnessX(double v);
    bool hasLinearStiffnessY() const;
    double LinearStiffnessY() const;
    void setLinearStiffnessY(double v);
    bool hasLinearStiffnessZ() const;
    double LinearStiffnessZ() const;
    void setLinearStiffnessZ(double v);
    bool hasRotationalStiffnessX() const;
    double RotationalStiffnessX() const;
    void setRotationalStiffnessX(double v);
    bool hasRotationalStiffnessY() const;
    double RotationalStiffnessY() const;
    void setRotationalStiffnessY(double v);
    bool hasRotationalStiffnessZ() const;
    double RotationalStiffnessZ() const;
    void setRotationalStiffnessZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundaryNodeCondition (IfcEntityInstanceData* e);
    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);
    typedef IfcTemplatedEntityList< IfcBoundaryNodeCondition > list;
};
class IFC_PARSE_API IfcBoundaryNodeConditionWarping : public IfcBoundaryNodeCondition {
public:
    bool hasWarpingStiffness() const;
    double WarpingStiffness() const;
    void setWarpingStiffness(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundaryNodeConditionWarping (IfcEntityInstanceData* e);
    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);
    typedef IfcTemplatedEntityList< IfcBoundaryNodeConditionWarping > list;
};

class IFC_PARSE_API IfcCalendarDate : public IfcUtil::IfcBaseEntity {
public:
    int DayComponent() const;
    void setDayComponent(int v);
    int MonthComponent() const;
    void setMonthComponent(int v);
    int YearComponent() const;
    void setYearComponent(int v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCalendarDate (IfcEntityInstanceData* e);
    IfcCalendarDate (int v1_DayComponent, int v2_MonthComponent, int v3_YearComponent);
    typedef IfcTemplatedEntityList< IfcCalendarDate > list;
};
class IFC_PARSE_API IfcClassification : public IfcUtil::IfcBaseEntity {
public:
    std::string Source() const;
    void setSource(std::string v);
    std::string Edition() const;
    void setEdition(std::string v);
    bool hasEditionDate() const;
    ::Ifc2x3::IfcCalendarDate* EditionDate() const;
    void setEditionDate(::Ifc2x3::IfcCalendarDate* v);
    std::string Name() const;
    void setName(std::string v);
        IfcTemplatedEntityList< IfcClassificationItem >::ptr Contains() const; // INVERSE IfcClassificationItem::ItemOf
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcClassification (IfcEntityInstanceData* e);
    IfcClassification (std::string v1_Source, std::string v2_Edition, ::Ifc2x3::IfcCalendarDate* v3_EditionDate, std::string v4_Name);
    typedef IfcTemplatedEntityList< IfcClassification > list;
};

class IFC_PARSE_API IfcClassificationItem : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcClassificationNotationFacet* Notation() const;
    void setNotation(::Ifc2x3::IfcClassificationNotationFacet* v);
    bool hasItemOf() const;
    ::Ifc2x3::IfcClassification* ItemOf() const;
    void setItemOf(::Ifc2x3::IfcClassification* v);
    std::string Title() const;
    void setTitle(std::string v);
        IfcTemplatedEntityList< IfcClassificationItemRelationship >::ptr IsClassifiedItemIn() const; // INVERSE IfcClassificationItemRelationship::RelatedItems
    IfcTemplatedEntityList< IfcClassificationItemRelationship >::ptr IsClassifyingItemIn() const; // INVERSE IfcClassificationItemRelationship::RelatingItem
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcClassificationItem (IfcEntityInstanceData* e);
    IfcClassificationItem (::Ifc2x3::IfcClassificationNotationFacet* v1_Notation, ::Ifc2x3::IfcClassification* v2_ItemOf, std::string v3_Title);
    typedef IfcTemplatedEntityList< IfcClassificationItem > list;
};

class IFC_PARSE_API IfcClassificationItemRelationship : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcClassificationItem* RelatingItem() const;
    void setRelatingItem(::Ifc2x3::IfcClassificationItem* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcClassificationItem >::ptr RelatedItems() const;
    void setRelatedItems(IfcTemplatedEntityList< ::Ifc2x3::IfcClassificationItem >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcClassificationItemRelationship (IfcEntityInstanceData* e);
    IfcClassificationItemRelationship (::Ifc2x3::IfcClassificationItem* v1_RelatingItem, IfcTemplatedEntityList< ::Ifc2x3::IfcClassificationItem >::ptr v2_RelatedItems);
    typedef IfcTemplatedEntityList< IfcClassificationItemRelationship > list;
};

class IFC_PARSE_API IfcClassificationNotation : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcClassificationNotationFacet >::ptr NotationFacets() const;
    void setNotationFacets(IfcTemplatedEntityList< ::Ifc2x3::IfcClassificationNotationFacet >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcClassificationNotation (IfcEntityInstanceData* e);
    IfcClassificationNotation (IfcTemplatedEntityList< ::Ifc2x3::IfcClassificationNotationFacet >::ptr v1_NotationFacets);
    typedef IfcTemplatedEntityList< IfcClassificationNotation > list;
};

class IFC_PARSE_API IfcClassificationNotationFacet : public IfcUtil::IfcBaseEntity {
public:
    std::string NotationValue() const;
    void setNotationValue(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcClassificationNotationFacet (IfcEntityInstanceData* e);
    IfcClassificationNotationFacet (std::string v1_NotationValue);
    typedef IfcTemplatedEntityList< IfcClassificationNotationFacet > list;
};
class IFC_PARSE_API IfcColourSpecification : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcColourSpecification (IfcEntityInstanceData* e);
    IfcColourSpecification (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcColourSpecification > list;
};
class IFC_PARSE_API IfcConnectionGeometry : public IfcUtil::IfcBaseEntity {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionGeometry (IfcEntityInstanceData* e);
    IfcConnectionGeometry ();
    typedef IfcTemplatedEntityList< IfcConnectionGeometry > list;
};
class IFC_PARSE_API IfcConnectionPointGeometry : public IfcConnectionGeometry {
public:
    ::Ifc2x3::IfcPointOrVertexPoint* PointOnRelatingElement() const;
    void setPointOnRelatingElement(::Ifc2x3::IfcPointOrVertexPoint* v);
    bool hasPointOnRelatedElement() const;
    ::Ifc2x3::IfcPointOrVertexPoint* PointOnRelatedElement() const;
    void setPointOnRelatedElement(::Ifc2x3::IfcPointOrVertexPoint* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionPointGeometry (IfcEntityInstanceData* e);
    IfcConnectionPointGeometry (::Ifc2x3::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc2x3::IfcPointOrVertexPoint* v2_PointOnRelatedElement);
    typedef IfcTemplatedEntityList< IfcConnectionPointGeometry > list;
};

class IFC_PARSE_API IfcConnectionPortGeometry : public IfcConnectionGeometry {
public:
    ::Ifc2x3::IfcAxis2Placement* LocationAtRelatingElement() const;
    void setLocationAtRelatingElement(::Ifc2x3::IfcAxis2Placement* v);
    bool hasLocationAtRelatedElement() const;
    ::Ifc2x3::IfcAxis2Placement* LocationAtRelatedElement() const;
    void setLocationAtRelatedElement(::Ifc2x3::IfcAxis2Placement* v);
    ::Ifc2x3::IfcProfileDef* ProfileOfPort() const;
    void setProfileOfPort(::Ifc2x3::IfcProfileDef* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionPortGeometry (IfcEntityInstanceData* e);
    IfcConnectionPortGeometry (::Ifc2x3::IfcAxis2Placement* v1_LocationAtRelatingElement, ::Ifc2x3::IfcAxis2Placement* v2_LocationAtRelatedElement, ::Ifc2x3::IfcProfileDef* v3_ProfileOfPort);
    typedef IfcTemplatedEntityList< IfcConnectionPortGeometry > list;
};
class IFC_PARSE_API IfcConnectionSurfaceGeometry : public IfcConnectionGeometry {
public:
    ::Ifc2x3::IfcSurfaceOrFaceSurface* SurfaceOnRelatingElement() const;
    void setSurfaceOnRelatingElement(::Ifc2x3::IfcSurfaceOrFaceSurface* v);
    bool hasSurfaceOnRelatedElement() const;
    ::Ifc2x3::IfcSurfaceOrFaceSurface* SurfaceOnRelatedElement() const;
    void setSurfaceOnRelatedElement(::Ifc2x3::IfcSurfaceOrFaceSurface* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionSurfaceGeometry (IfcEntityInstanceData* e);
    IfcConnectionSurfaceGeometry (::Ifc2x3::IfcSurfaceOrFaceSurface* v1_SurfaceOnRelatingElement, ::Ifc2x3::IfcSurfaceOrFaceSurface* v2_SurfaceOnRelatedElement);
    typedef IfcTemplatedEntityList< IfcConnectionSurfaceGeometry > list;
};
class IFC_PARSE_API IfcConstraint : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    ::Ifc2x3::IfcConstraintEnum::Value ConstraintGrade() const;
    void setConstraintGrade(::Ifc2x3::IfcConstraintEnum::Value v);
    bool hasConstraintSource() const;
    std::string ConstraintSource() const;
    void setConstraintSource(std::string v);
    bool hasCreatingActor() const;
    ::Ifc2x3::IfcActorSelect* CreatingActor() const;
    void setCreatingActor(::Ifc2x3::IfcActorSelect* v);
    bool hasCreationTime() const;
    ::Ifc2x3::IfcDateTimeSelect* CreationTime() const;
    void setCreationTime(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasUserDefinedGrade() const;
    std::string UserDefinedGrade() const;
    void setUserDefinedGrade(std::string v);
        IfcTemplatedEntityList< IfcConstraintClassificationRelationship >::ptr ClassifiedAs() const; // INVERSE IfcConstraintClassificationRelationship::ClassifiedConstraint
    IfcTemplatedEntityList< IfcConstraintRelationship >::ptr RelatesConstraints() const; // INVERSE IfcConstraintRelationship::RelatingConstraint
    IfcTemplatedEntityList< IfcConstraintRelationship >::ptr IsRelatedWith() const; // INVERSE IfcConstraintRelationship::RelatedConstraints
    IfcTemplatedEntityList< IfcPropertyConstraintRelationship >::ptr PropertiesForConstraint() const; // INVERSE IfcPropertyConstraintRelationship::RelatingConstraint
    IfcTemplatedEntityList< IfcConstraintAggregationRelationship >::ptr Aggregates() const; // INVERSE IfcConstraintAggregationRelationship::RelatingConstraint
    IfcTemplatedEntityList< IfcConstraintAggregationRelationship >::ptr IsAggregatedIn() const; // INVERSE IfcConstraintAggregationRelationship::RelatedConstraints
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstraint (IfcEntityInstanceData* e);
    IfcConstraint (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc2x3::IfcActorSelect* v5_CreatingActor, ::Ifc2x3::IfcDateTimeSelect* v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade);
    typedef IfcTemplatedEntityList< IfcConstraint > list;
};
class IFC_PARSE_API IfcConstraintAggregationRelationship : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    ::Ifc2x3::IfcConstraint* RelatingConstraint() const;
    void setRelatingConstraint(::Ifc2x3::IfcConstraint* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcConstraint >::ptr RelatedConstraints() const;
    void setRelatedConstraints(IfcTemplatedEntityList< ::Ifc2x3::IfcConstraint >::ptr v);
    ::Ifc2x3::IfcLogicalOperatorEnum::Value LogicalAggregator() const;
    void setLogicalAggregator(::Ifc2x3::IfcLogicalOperatorEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstraintAggregationRelationship (IfcEntityInstanceData* e);
    IfcConstraintAggregationRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcConstraint* v3_RelatingConstraint, IfcTemplatedEntityList< ::Ifc2x3::IfcConstraint >::ptr v4_RelatedConstraints, ::Ifc2x3::IfcLogicalOperatorEnum::Value v5_LogicalAggregator);
    typedef IfcTemplatedEntityList< IfcConstraintAggregationRelationship > list;
};

class IFC_PARSE_API IfcConstraintClassificationRelationship : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcConstraint* ClassifiedConstraint() const;
    void setClassifiedConstraint(::Ifc2x3::IfcConstraint* v);
    IfcEntityList::ptr RelatedClassifications() const;
    void setRelatedClassifications(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstraintClassificationRelationship (IfcEntityInstanceData* e);
    IfcConstraintClassificationRelationship (::Ifc2x3::IfcConstraint* v1_ClassifiedConstraint, IfcEntityList::ptr v2_RelatedClassifications);
    typedef IfcTemplatedEntityList< IfcConstraintClassificationRelationship > list;
};
class IFC_PARSE_API IfcConstraintRelationship : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    ::Ifc2x3::IfcConstraint* RelatingConstraint() const;
    void setRelatingConstraint(::Ifc2x3::IfcConstraint* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcConstraint >::ptr RelatedConstraints() const;
    void setRelatedConstraints(IfcTemplatedEntityList< ::Ifc2x3::IfcConstraint >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstraintRelationship (IfcEntityInstanceData* e);
    IfcConstraintRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcConstraint* v3_RelatingConstraint, IfcTemplatedEntityList< ::Ifc2x3::IfcConstraint >::ptr v4_RelatedConstraints);
    typedef IfcTemplatedEntityList< IfcConstraintRelationship > list;
};

class IFC_PARSE_API IfcCoordinatedUniversalTimeOffset : public IfcUtil::IfcBaseEntity {
public:
    int HourOffset() const;
    void setHourOffset(int v);
    bool hasMinuteOffset() const;
    int MinuteOffset() const;
    void setMinuteOffset(int v);
    ::Ifc2x3::IfcAheadOrBehind::Value Sense() const;
    void setSense(::Ifc2x3::IfcAheadOrBehind::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCoordinatedUniversalTimeOffset (IfcEntityInstanceData* e);
    IfcCoordinatedUniversalTimeOffset (int v1_HourOffset, boost::optional< int > v2_MinuteOffset, ::Ifc2x3::IfcAheadOrBehind::Value v3_Sense);
    typedef IfcTemplatedEntityList< IfcCoordinatedUniversalTimeOffset > list;
};
class IFC_PARSE_API IfcCostValue : public IfcAppliedValue {
public:
    std::string CostType() const;
    void setCostType(std::string v);
    bool hasCondition() const;
    std::string Condition() const;
    void setCondition(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCostValue (IfcEntityInstanceData* e);
    IfcCostValue (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc2x3::IfcMeasureWithUnit* v4_UnitBasis, ::Ifc2x3::IfcDateTimeSelect* v5_ApplicableDate, ::Ifc2x3::IfcDateTimeSelect* v6_FixedUntilDate, std::string v7_CostType, boost::optional< std::string > v8_Condition);
    typedef IfcTemplatedEntityList< IfcCostValue > list;
};
class IFC_PARSE_API IfcCurrencyRelationship : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcMonetaryUnit* RelatingMonetaryUnit() const;
    void setRelatingMonetaryUnit(::Ifc2x3::IfcMonetaryUnit* v);
    ::Ifc2x3::IfcMonetaryUnit* RelatedMonetaryUnit() const;
    void setRelatedMonetaryUnit(::Ifc2x3::IfcMonetaryUnit* v);
    double ExchangeRate() const;
    void setExchangeRate(double v);
    ::Ifc2x3::IfcDateAndTime* RateDateTime() const;
    void setRateDateTime(::Ifc2x3::IfcDateAndTime* v);
    bool hasRateSource() const;
    ::Ifc2x3::IfcLibraryInformation* RateSource() const;
    void setRateSource(::Ifc2x3::IfcLibraryInformation* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurrencyRelationship (IfcEntityInstanceData* e);
    IfcCurrencyRelationship (::Ifc2x3::IfcMonetaryUnit* v1_RelatingMonetaryUnit, ::Ifc2x3::IfcMonetaryUnit* v2_RelatedMonetaryUnit, double v3_ExchangeRate, ::Ifc2x3::IfcDateAndTime* v4_RateDateTime, ::Ifc2x3::IfcLibraryInformation* v5_RateSource);
    typedef IfcTemplatedEntityList< IfcCurrencyRelationship > list;
};
class IFC_PARSE_API IfcCurveStyleFont : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcCurveStyleFontPattern >::ptr PatternList() const;
    void setPatternList(IfcTemplatedEntityList< ::Ifc2x3::IfcCurveStyleFontPattern >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurveStyleFont (IfcEntityInstanceData* e);
    IfcCurveStyleFont (boost::optional< std::string > v1_Name, IfcTemplatedEntityList< ::Ifc2x3::IfcCurveStyleFontPattern >::ptr v2_PatternList);
    typedef IfcTemplatedEntityList< IfcCurveStyleFont > list;
};
class IFC_PARSE_API IfcCurveStyleFontAndScaling : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    ::Ifc2x3::IfcCurveStyleFontSelect* CurveFont() const;
    void setCurveFont(::Ifc2x3::IfcCurveStyleFontSelect* v);
    double CurveFontScaling() const;
    void setCurveFontScaling(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurveStyleFontAndScaling (IfcEntityInstanceData* e);
    IfcCurveStyleFontAndScaling (boost::optional< std::string > v1_Name, ::Ifc2x3::IfcCurveStyleFontSelect* v2_CurveFont, double v3_CurveFontScaling);
    typedef IfcTemplatedEntityList< IfcCurveStyleFontAndScaling > list;
};
class IFC_PARSE_API IfcCurveStyleFontPattern : public IfcUtil::IfcBaseEntity {
public:
    double VisibleSegmentLength() const;
    void setVisibleSegmentLength(double v);
    double InvisibleSegmentLength() const;
    void setInvisibleSegmentLength(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurveStyleFontPattern (IfcEntityInstanceData* e);
    IfcCurveStyleFontPattern (double v1_VisibleSegmentLength, double v2_InvisibleSegmentLength);
    typedef IfcTemplatedEntityList< IfcCurveStyleFontPattern > list;
};

class IFC_PARSE_API IfcDateAndTime : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcCalendarDate* DateComponent() const;
    void setDateComponent(::Ifc2x3::IfcCalendarDate* v);
    ::Ifc2x3::IfcLocalTime* TimeComponent() const;
    void setTimeComponent(::Ifc2x3::IfcLocalTime* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDateAndTime (IfcEntityInstanceData* e);
    IfcDateAndTime (::Ifc2x3::IfcCalendarDate* v1_DateComponent, ::Ifc2x3::IfcLocalTime* v2_TimeComponent);
    typedef IfcTemplatedEntityList< IfcDateAndTime > list;
};
class IFC_PARSE_API IfcDerivedUnit : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcDerivedUnitElement >::ptr Elements() const;
    void setElements(IfcTemplatedEntityList< ::Ifc2x3::IfcDerivedUnitElement >::ptr v);
    ::Ifc2x3::IfcDerivedUnitEnum::Value UnitType() const;
    void setUnitType(::Ifc2x3::IfcDerivedUnitEnum::Value v);
    bool hasUserDefinedType() const;
    std::string UserDefinedType() const;
    void setUserDefinedType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDerivedUnit (IfcEntityInstanceData* e);
    IfcDerivedUnit (IfcTemplatedEntityList< ::Ifc2x3::IfcDerivedUnitElement >::ptr v1_Elements, ::Ifc2x3::IfcDerivedUnitEnum::Value v2_UnitType, boost::optional< std::string > v3_UserDefinedType);
    typedef IfcTemplatedEntityList< IfcDerivedUnit > list;
};
class IFC_PARSE_API IfcDerivedUnitElement : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcNamedUnit* Unit() const;
    void setUnit(::Ifc2x3::IfcNamedUnit* v);
    int Exponent() const;
    void setExponent(int v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDerivedUnitElement (IfcEntityInstanceData* e);
    IfcDerivedUnitElement (::Ifc2x3::IfcNamedUnit* v1_Unit, int v2_Exponent);
    typedef IfcTemplatedEntityList< IfcDerivedUnitElement > list;
};
class IFC_PARSE_API IfcDimensionalExponents : public IfcUtil::IfcBaseEntity {
public:
    int LengthExponent() const;
    void setLengthExponent(int v);
    int MassExponent() const;
    void setMassExponent(int v);
    int TimeExponent() const;
    void setTimeExponent(int v);
    int ElectricCurrentExponent() const;
    void setElectricCurrentExponent(int v);
    int ThermodynamicTemperatureExponent() const;
    void setThermodynamicTemperatureExponent(int v);
    int AmountOfSubstanceExponent() const;
    void setAmountOfSubstanceExponent(int v);
    int LuminousIntensityExponent() const;
    void setLuminousIntensityExponent(int v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDimensionalExponents (IfcEntityInstanceData* e);
    IfcDimensionalExponents (int v1_LengthExponent, int v2_MassExponent, int v3_TimeExponent, int v4_ElectricCurrentExponent, int v5_ThermodynamicTemperatureExponent, int v6_AmountOfSubstanceExponent, int v7_LuminousIntensityExponent);
    typedef IfcTemplatedEntityList< IfcDimensionalExponents > list;
};
class IFC_PARSE_API IfcDocumentElectronicFormat : public IfcUtil::IfcBaseEntity {
public:
    bool hasFileExtension() const;
    std::string FileExtension() const;
    void setFileExtension(std::string v);
    bool hasMimeContentType() const;
    std::string MimeContentType() const;
    void setMimeContentType(std::string v);
    bool hasMimeSubtype() const;
    std::string MimeSubtype() const;
    void setMimeSubtype(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDocumentElectronicFormat (IfcEntityInstanceData* e);
    IfcDocumentElectronicFormat (boost::optional< std::string > v1_FileExtension, boost::optional< std::string > v2_MimeContentType, boost::optional< std::string > v3_MimeSubtype);
    typedef IfcTemplatedEntityList< IfcDocumentElectronicFormat > list;
};
class IFC_PARSE_API IfcDocumentInformation : public IfcUtil::IfcBaseEntity {
public:
    std::string DocumentId() const;
    void setDocumentId(std::string v);
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasDocumentReferences() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcDocumentReference >::ptr DocumentReferences() const;
    void setDocumentReferences(IfcTemplatedEntityList< ::Ifc2x3::IfcDocumentReference >::ptr v);
    bool hasPurpose() const;
    std::string Purpose() const;
    void setPurpose(std::string v);
    bool hasIntendedUse() const;
    std::string IntendedUse() const;
    void setIntendedUse(std::string v);
    bool hasScope() const;
    std::string Scope() const;
    void setScope(std::string v);
    bool hasRevision() const;
    std::string Revision() const;
    void setRevision(std::string v);
    bool hasDocumentOwner() const;
    ::Ifc2x3::IfcActorSelect* DocumentOwner() const;
    void setDocumentOwner(::Ifc2x3::IfcActorSelect* v);
    bool hasEditors() const;
    IfcEntityList::ptr Editors() const;
    void setEditors(IfcEntityList::ptr v);
    bool hasCreationTime() const;
    ::Ifc2x3::IfcDateAndTime* CreationTime() const;
    void setCreationTime(::Ifc2x3::IfcDateAndTime* v);
    bool hasLastRevisionTime() const;
    ::Ifc2x3::IfcDateAndTime* LastRevisionTime() const;
    void setLastRevisionTime(::Ifc2x3::IfcDateAndTime* v);
    bool hasElectronicFormat() const;
    ::Ifc2x3::IfcDocumentElectronicFormat* ElectronicFormat() const;
    void setElectronicFormat(::Ifc2x3::IfcDocumentElectronicFormat* v);
    bool hasValidFrom() const;
    ::Ifc2x3::IfcCalendarDate* ValidFrom() const;
    void setValidFrom(::Ifc2x3::IfcCalendarDate* v);
    bool hasValidUntil() const;
    ::Ifc2x3::IfcCalendarDate* ValidUntil() const;
    void setValidUntil(::Ifc2x3::IfcCalendarDate* v);
    bool hasConfidentiality() const;
    ::Ifc2x3::IfcDocumentConfidentialityEnum::Value Confidentiality() const;
    void setConfidentiality(::Ifc2x3::IfcDocumentConfidentialityEnum::Value v);
    bool hasStatus() const;
    ::Ifc2x3::IfcDocumentStatusEnum::Value Status() const;
    void setStatus(::Ifc2x3::IfcDocumentStatusEnum::Value v);
        IfcTemplatedEntityList< IfcDocumentInformationRelationship >::ptr IsPointedTo() const; // INVERSE IfcDocumentInformationRelationship::RelatedDocuments
    IfcTemplatedEntityList< IfcDocumentInformationRelationship >::ptr IsPointer() const; // INVERSE IfcDocumentInformationRelationship::RelatingDocument
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDocumentInformation (IfcEntityInstanceData* e);
    IfcDocumentInformation (std::string v1_DocumentId, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::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, ::Ifc2x3::IfcActorSelect* v9_DocumentOwner, boost::optional< IfcEntityList::ptr > v10_Editors, ::Ifc2x3::IfcDateAndTime* v11_CreationTime, ::Ifc2x3::IfcDateAndTime* v12_LastRevisionTime, ::Ifc2x3::IfcDocumentElectronicFormat* v13_ElectronicFormat, ::Ifc2x3::IfcCalendarDate* v14_ValidFrom, ::Ifc2x3::IfcCalendarDate* v15_ValidUntil, boost::optional< ::Ifc2x3::IfcDocumentConfidentialityEnum::Value > v16_Confidentiality, boost::optional< ::Ifc2x3::IfcDocumentStatusEnum::Value > v17_Status);
    typedef IfcTemplatedEntityList< IfcDocumentInformation > list;
};
class IFC_PARSE_API IfcDocumentInformationRelationship : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcDocumentInformation* RelatingDocument() const;
    void setRelatingDocument(::Ifc2x3::IfcDocumentInformation* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcDocumentInformation >::ptr RelatedDocuments() const;
    void setRelatedDocuments(IfcTemplatedEntityList< ::Ifc2x3::IfcDocumentInformation >::ptr v);
    bool hasRelationshipType() const;
    std::string RelationshipType() const;
    void setRelationshipType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDocumentInformationRelationship (IfcEntityInstanceData* e);
    IfcDocumentInformationRelationship (::Ifc2x3::IfcDocumentInformation* v1_RelatingDocument, IfcTemplatedEntityList< ::Ifc2x3::IfcDocumentInformation >::ptr v2_RelatedDocuments, boost::optional< std::string > v3_RelationshipType);
    typedef IfcTemplatedEntityList< IfcDocumentInformationRelationship > list;
};

class IFC_PARSE_API IfcDraughtingCalloutRelationship : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    ::Ifc2x3::IfcDraughtingCallout* RelatingDraughtingCallout() const;
    void setRelatingDraughtingCallout(::Ifc2x3::IfcDraughtingCallout* v);
    ::Ifc2x3::IfcDraughtingCallout* RelatedDraughtingCallout() const;
    void setRelatedDraughtingCallout(::Ifc2x3::IfcDraughtingCallout* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDraughtingCalloutRelationship (IfcEntityInstanceData* e);
    IfcDraughtingCalloutRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcDraughtingCallout* v3_RelatingDraughtingCallout, ::Ifc2x3::IfcDraughtingCallout* v4_RelatedDraughtingCallout);
    typedef IfcTemplatedEntityList< IfcDraughtingCalloutRelationship > list;
};

class IFC_PARSE_API IfcEnvironmentalImpactValue : public IfcAppliedValue {
public:
    std::string ImpactType() const;
    void setImpactType(std::string v);
    ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::Value Category() const;
    void setCategory(::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::Value v);
    bool hasUserDefinedCategory() const;
    std::string UserDefinedCategory() const;
    void setUserDefinedCategory(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEnvironmentalImpactValue (IfcEntityInstanceData* e);
    IfcEnvironmentalImpactValue (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc2x3::IfcMeasureWithUnit* v4_UnitBasis, ::Ifc2x3::IfcDateTimeSelect* v5_ApplicableDate, ::Ifc2x3::IfcDateTimeSelect* v6_FixedUntilDate, std::string v7_ImpactType, ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::Value v8_Category, boost::optional< std::string > v9_UserDefinedCategory);
    typedef IfcTemplatedEntityList< IfcEnvironmentalImpactValue > list;
};
class IFC_PARSE_API IfcExternalReference : public IfcUtil::IfcBaseEntity {
public:
    bool hasLocation() const;
    std::string Location() const;
    void setLocation(std::string v);
    bool hasItemReference() const;
    std::string ItemReference() const;
    void setItemReference(std::string v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternalReference (IfcEntityInstanceData* e);
    IfcExternalReference (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_ItemReference, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcExternalReference > list;
};
class IFC_PARSE_API IfcExternallyDefinedHatchStyle : public IfcExternalReference {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternallyDefinedHatchStyle (IfcEntityInstanceData* e);
    IfcExternallyDefinedHatchStyle (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_ItemReference, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcExternallyDefinedHatchStyle > list;
};
class IFC_PARSE_API IfcExternallyDefinedSurfaceStyle : public IfcExternalReference {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternallyDefinedSurfaceStyle (IfcEntityInstanceData* e);
    IfcExternallyDefinedSurfaceStyle (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_ItemReference, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcExternallyDefinedSurfaceStyle > list;
};
class IFC_PARSE_API IfcExternallyDefinedSymbol : public IfcExternalReference {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternallyDefinedSymbol (IfcEntityInstanceData* e);
    IfcExternallyDefinedSymbol (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_ItemReference, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcExternallyDefinedSymbol > list;
};
class IFC_PARSE_API IfcExternallyDefinedTextFont : public IfcExternalReference {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternallyDefinedTextFont (IfcEntityInstanceData* e);
    IfcExternallyDefinedTextFont (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_ItemReference, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcExternallyDefinedTextFont > list;
};
class IFC_PARSE_API IfcGridAxis : public IfcUtil::IfcBaseEntity {
public:
    bool hasAxisTag() const;
    std::string AxisTag() const;
    void setAxisTag(std::string v);
    ::Ifc2x3::IfcCurve* AxisCurve() const;
    void setAxisCurve(::Ifc2x3::IfcCurve* v);
    bool SameSense() const;
    void setSameSense(bool v);
        IfcTemplatedEntityList< IfcGrid >::ptr PartOfW() const; // INVERSE IfcGrid::WAxes
    IfcTemplatedEntityList< IfcGrid >::ptr PartOfV() const; // INVERSE IfcGrid::VAxes
    IfcTemplatedEntityList< IfcGrid >::ptr PartOfU() const; // INVERSE IfcGrid::UAxes
    IfcTemplatedEntityList< IfcVirtualGridIntersection >::ptr HasIntersections() const; // INVERSE IfcVirtualGridIntersection::IntersectingAxes
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGridAxis (IfcEntityInstanceData* e);
    IfcGridAxis (boost::optional< std::string > v1_AxisTag, ::Ifc2x3::IfcCurve* v2_AxisCurve, bool v3_SameSense);
    typedef IfcTemplatedEntityList< IfcGridAxis > list;
};
class IFC_PARSE_API IfcIrregularTimeSeriesValue : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcDateTimeSelect* TimeStamp() const;
    void setTimeStamp(::Ifc2x3::IfcDateTimeSelect* v);
    IfcEntityList::ptr ListValues() const;
    void setListValues(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIrregularTimeSeriesValue (IfcEntityInstanceData* e);
    IfcIrregularTimeSeriesValue (::Ifc2x3::IfcDateTimeSelect* v1_TimeStamp, IfcEntityList::ptr v2_ListValues);
    typedef IfcTemplatedEntityList< IfcIrregularTimeSeriesValue > list;
};
class IFC_PARSE_API IfcLibraryInformation : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasVersion() const;
    std::string Version() const;
    void setVersion(std::string v);
    bool hasPublisher() const;
    ::Ifc2x3::IfcOrganization* Publisher() const;
    void setPublisher(::Ifc2x3::IfcOrganization* v);
    bool hasVersionDate() const;
    ::Ifc2x3::IfcCalendarDate* VersionDate() const;
    void setVersionDate(::Ifc2x3::IfcCalendarDate* v);
    bool hasLibraryReference() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcLibraryReference >::ptr LibraryReference() const;
    void setLibraryReference(IfcTemplatedEntityList< ::Ifc2x3::IfcLibraryReference >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLibraryInformation (IfcEntityInstanceData* e);
    IfcLibraryInformation (std::string v1_Name, boost::optional< std::string > v2_Version, ::Ifc2x3::IfcOrganization* v3_Publisher, ::Ifc2x3::IfcCalendarDate* v4_VersionDate, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcLibraryReference >::ptr > v5_LibraryReference);
    typedef IfcTemplatedEntityList< IfcLibraryInformation > list;
};
class IFC_PARSE_API IfcLibraryReference : public IfcExternalReference {
public:
        IfcTemplatedEntityList< IfcLibraryInformation >::ptr ReferenceIntoLibrary() const; // INVERSE IfcLibraryInformation::LibraryReference
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLibraryReference (IfcEntityInstanceData* e);
    IfcLibraryReference (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_ItemReference, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcLibraryReference > list;
};
class IFC_PARSE_API IfcLightDistributionData : public IfcUtil::IfcBaseEntity {
public:
    double MainPlaneAngle() const;
    void setMainPlaneAngle(double v);
    std::vector< double > /*[1:?]*/ SecondaryPlaneAngle() const;
    void setSecondaryPlaneAngle(std::vector< double > /*[1:?]*/ v);
    std::vector< double > /*[1:?]*/ LuminousIntensity() const;
    void setLuminousIntensity(std::vector< double > /*[1:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightDistributionData (IfcEntityInstanceData* e);
    IfcLightDistributionData (double v1_MainPlaneAngle, std::vector< double > /*[1:?]*/ v2_SecondaryPlaneAngle, std::vector< double > /*[1:?]*/ v3_LuminousIntensity);
    typedef IfcTemplatedEntityList< IfcLightDistributionData > list;
};
class IFC_PARSE_API IfcLightIntensityDistribution : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcLightDistributionCurveEnum::Value LightDistributionCurve() const;
    void setLightDistributionCurve(::Ifc2x3::IfcLightDistributionCurveEnum::Value v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcLightDistributionData >::ptr DistributionData() const;
    void setDistributionData(IfcTemplatedEntityList< ::Ifc2x3::IfcLightDistributionData >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightIntensityDistribution (IfcEntityInstanceData* e);
    IfcLightIntensityDistribution (::Ifc2x3::IfcLightDistributionCurveEnum::Value v1_LightDistributionCurve, IfcTemplatedEntityList< ::Ifc2x3::IfcLightDistributionData >::ptr v2_DistributionData);
    typedef IfcTemplatedEntityList< IfcLightIntensityDistribution > list;
};

class IFC_PARSE_API IfcLocalTime : public IfcUtil::IfcBaseEntity {
public:
    int HourComponent() const;
    void setHourComponent(int v);
    bool hasMinuteComponent() const;
    int MinuteComponent() const;
    void setMinuteComponent(int v);
    bool hasSecondComponent() const;
    double SecondComponent() const;
    void setSecondComponent(double v);
    bool hasZone() const;
    ::Ifc2x3::IfcCoordinatedUniversalTimeOffset* Zone() const;
    void setZone(::Ifc2x3::IfcCoordinatedUniversalTimeOffset* v);
    bool hasDaylightSavingOffset() const;
    int DaylightSavingOffset() const;
    void setDaylightSavingOffset(int v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLocalTime (IfcEntityInstanceData* e);
    IfcLocalTime (int v1_HourComponent, boost::optional< int > v2_MinuteComponent, boost::optional< double > v3_SecondComponent, ::Ifc2x3::IfcCoordinatedUniversalTimeOffset* v4_Zone, boost::optional< int > v5_DaylightSavingOffset);
    typedef IfcTemplatedEntityList< IfcLocalTime > list;
};
class IFC_PARSE_API IfcMaterial : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
        IfcTemplatedEntityList< IfcMaterialDefinitionRepresentation >::ptr HasRepresentation() const; // INVERSE IfcMaterialDefinitionRepresentation::RepresentedMaterial
    IfcTemplatedEntityList< IfcMaterialClassificationRelationship >::ptr ClassifiedAs() const; // INVERSE IfcMaterialClassificationRelationship::ClassifiedMaterial
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterial (IfcEntityInstanceData* e);
    IfcMaterial (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcMaterial > list;
};
class IFC_PARSE_API IfcMaterialClassificationRelationship : public IfcUtil::IfcBaseEntity {
public:
    IfcEntityList::ptr MaterialClassifications() const;
    void setMaterialClassifications(IfcEntityList::ptr v);
    ::Ifc2x3::IfcMaterial* ClassifiedMaterial() const;
    void setClassifiedMaterial(::Ifc2x3::IfcMaterial* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialClassificationRelationship (IfcEntityInstanceData* e);
    IfcMaterialClassificationRelationship (IfcEntityList::ptr v1_MaterialClassifications, ::Ifc2x3::IfcMaterial* v2_ClassifiedMaterial);
    typedef IfcTemplatedEntityList< IfcMaterialClassificationRelationship > list;
};
class IFC_PARSE_API IfcMaterialLayer : public IfcUtil::IfcBaseEntity {
public:
    bool hasMaterial() const;
    ::Ifc2x3::IfcMaterial* Material() const;
    void setMaterial(::Ifc2x3::IfcMaterial* v);
    double LayerThickness() const;
    void setLayerThickness(double v);
    bool hasIsVentilated() const;
    bool IsVentilated() const;
    void setIsVentilated(bool v);
        IfcTemplatedEntityList< IfcMaterialLayerSet >::ptr ToMaterialLayerSet() const; // INVERSE IfcMaterialLayerSet::MaterialLayers
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialLayer (IfcEntityInstanceData* e);
    IfcMaterialLayer (::Ifc2x3::IfcMaterial* v1_Material, double v2_LayerThickness, boost::optional< bool > v3_IsVentilated);
    typedef IfcTemplatedEntityList< IfcMaterialLayer > list;
};
class IFC_PARSE_API IfcMaterialLayerSet : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcMaterialLayer >::ptr MaterialLayers() const;
    void setMaterialLayers(IfcTemplatedEntityList< ::Ifc2x3::IfcMaterialLayer >::ptr v);
    bool hasLayerSetName() const;
    std::string LayerSetName() const;
    void setLayerSetName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialLayerSet (IfcEntityInstanceData* e);
    IfcMaterialLayerSet (IfcTemplatedEntityList< ::Ifc2x3::IfcMaterialLayer >::ptr v1_MaterialLayers, boost::optional< std::string > v2_LayerSetName);
    typedef IfcTemplatedEntityList< IfcMaterialLayerSet > list;
};
class IFC_PARSE_API IfcMaterialLayerSetUsage : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcMaterialLayerSet* ForLayerSet() const;
    void setForLayerSet(::Ifc2x3::IfcMaterialLayerSet* v);
    ::Ifc2x3::IfcLayerSetDirectionEnum::Value LayerSetDirection() const;
    void setLayerSetDirection(::Ifc2x3::IfcLayerSetDirectionEnum::Value v);
    ::Ifc2x3::IfcDirectionSenseEnum::Value DirectionSense() const;
    void setDirectionSense(::Ifc2x3::IfcDirectionSenseEnum::Value v);
    double OffsetFromReferenceLine() const;
    void setOffsetFromReferenceLine(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialLayerSetUsage (IfcEntityInstanceData* e);
    IfcMaterialLayerSetUsage (::Ifc2x3::IfcMaterialLayerSet* v1_ForLayerSet, ::Ifc2x3::IfcLayerSetDirectionEnum::Value v2_LayerSetDirection, ::Ifc2x3::IfcDirectionSenseEnum::Value v3_DirectionSense, double v4_OffsetFromReferenceLine);
    typedef IfcTemplatedEntityList< IfcMaterialLayerSetUsage > list;
};
class IFC_PARSE_API IfcMaterialList : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcMaterial >::ptr Materials() const;
    void setMaterials(IfcTemplatedEntityList< ::Ifc2x3::IfcMaterial >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialList (IfcEntityInstanceData* e);
    IfcMaterialList (IfcTemplatedEntityList< ::Ifc2x3::IfcMaterial >::ptr v1_Materials);
    typedef IfcTemplatedEntityList< IfcMaterialList > list;
};
class IFC_PARSE_API IfcMaterialProperties : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcMaterial* Material() const;
    void setMaterial(::Ifc2x3::IfcMaterial* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialProperties (IfcEntityInstanceData* e);
    IfcMaterialProperties (::Ifc2x3::IfcMaterial* v1_Material);
    typedef IfcTemplatedEntityList< IfcMaterialProperties > list;
};
class IFC_PARSE_API IfcMeasureWithUnit : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcValue* ValueComponent() const;
    void setValueComponent(::Ifc2x3::IfcValue* v);
    ::Ifc2x3::IfcUnit* UnitComponent() const;
    void setUnitComponent(::Ifc2x3::IfcUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMeasureWithUnit (IfcEntityInstanceData* e);
    IfcMeasureWithUnit (::Ifc2x3::IfcValue* v1_ValueComponent, ::Ifc2x3::IfcUnit* v2_UnitComponent);
    typedef IfcTemplatedEntityList< IfcMeasureWithUnit > list;
};

class IFC_PARSE_API IfcMechanicalMaterialProperties : public IfcMaterialProperties {
public:
    bool hasDynamicViscosity() const;
    double DynamicViscosity() const;
    void setDynamicViscosity(double v);
    bool hasYoungModulus() const;
    double YoungModulus() const;
    void setYoungModulus(double v);
    bool hasShearModulus() const;
    double ShearModulus() const;
    void setShearModulus(double v);
    bool hasPoissonRatio() const;
    double PoissonRatio() const;
    void setPoissonRatio(double v);
    bool hasThermalExpansionCoefficient() const;
    double ThermalExpansionCoefficient() const;
    void setThermalExpansionCoefficient(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMechanicalMaterialProperties (IfcEntityInstanceData* e);
    IfcMechanicalMaterialProperties (::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcMechanicalMaterialProperties > list;
};

class IFC_PARSE_API IfcMechanicalSteelMaterialProperties : public IfcMechanicalMaterialProperties {
public:
    bool hasYieldStress() const;
    double YieldStress() const;
    void setYieldStress(double v);
    bool hasUltimateStress() const;
    double UltimateStress() const;
    void setUltimateStress(double v);
    bool hasUltimateStrain() const;
    double UltimateStrain() const;
    void setUltimateStrain(double v);
    bool hasHardeningModule() const;
    double HardeningModule() const;
    void setHardeningModule(double v);
    bool hasProportionalStress() const;
    double ProportionalStress() const;
    void setProportionalStress(double v);
    bool hasPlasticStrain() const;
    double PlasticStrain() const;
    void setPlasticStrain(double v);
    bool hasRelaxations() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcRelaxation >::ptr Relaxations() const;
    void setRelaxations(IfcTemplatedEntityList< ::Ifc2x3::IfcRelaxation >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMechanicalSteelMaterialProperties (IfcEntityInstanceData* e);
    IfcMechanicalSteelMaterialProperties (::Ifc2x3::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< ::Ifc2x3::IfcRelaxation >::ptr > v13_Relaxations);
    typedef IfcTemplatedEntityList< IfcMechanicalSteelMaterialProperties > list;
};
class IFC_PARSE_API IfcMetric : public IfcConstraint {
public:
    ::Ifc2x3::IfcBenchmarkEnum::Value Benchmark() const;
    void setBenchmark(::Ifc2x3::IfcBenchmarkEnum::Value v);
    bool hasValueSource() const;
    std::string ValueSource() const;
    void setValueSource(std::string v);
    ::Ifc2x3::IfcMetricValueSelect* DataValue() const;
    void setDataValue(::Ifc2x3::IfcMetricValueSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMetric (IfcEntityInstanceData* e);
    IfcMetric (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc2x3::IfcActorSelect* v5_CreatingActor, ::Ifc2x3::IfcDateTimeSelect* v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, ::Ifc2x3::IfcBenchmarkEnum::Value v8_Benchmark, boost::optional< std::string > v9_ValueSource, ::Ifc2x3::IfcMetricValueSelect* v10_DataValue);
    typedef IfcTemplatedEntityList< IfcMetric > list;
};
class IFC_PARSE_API IfcMonetaryUnit : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcCurrencyEnum::Value Currency() const;
    void setCurrency(::Ifc2x3::IfcCurrencyEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMonetaryUnit (IfcEntityInstanceData* e);
    IfcMonetaryUnit (::Ifc2x3::IfcCurrencyEnum::Value v1_Currency);
    typedef IfcTemplatedEntityList< IfcMonetaryUnit > list;
};
class IFC_PARSE_API IfcNamedUnit : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcDimensionalExponents* Dimensions() const;
    void setDimensions(::Ifc2x3::IfcDimensionalExponents* v);
    ::Ifc2x3::IfcUnitEnum::Value UnitType() const;
    void setUnitType(::Ifc2x3::IfcUnitEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcNamedUnit (IfcEntityInstanceData* e);
    IfcNamedUnit (::Ifc2x3::IfcDimensionalExponents* v1_Dimensions, ::Ifc2x3::IfcUnitEnum::Value v2_UnitType);
    typedef IfcTemplatedEntityList< IfcNamedUnit > list;
};
class IFC_PARSE_API IfcObjectPlacement : public IfcUtil::IfcBaseEntity {
public:
        IfcTemplatedEntityList< IfcProduct >::ptr PlacesObject() const; // INVERSE IfcProduct::ObjectPlacement
    IfcTemplatedEntityList< IfcLocalPlacement >::ptr ReferencedByPlacements() const; // INVERSE IfcLocalPlacement::PlacementRelTo
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcObjectPlacement (IfcEntityInstanceData* e);
    IfcObjectPlacement ();
    typedef IfcTemplatedEntityList< IfcObjectPlacement > list;
};
class IFC_PARSE_API IfcObjective : public IfcConstraint {
public:
    bool hasBenchmarkValues() const;
    ::Ifc2x3::IfcMetric* BenchmarkValues() const;
    void setBenchmarkValues(::Ifc2x3::IfcMetric* v);
    bool hasResultValues() const;
    ::Ifc2x3::IfcMetric* ResultValues() const;
    void setResultValues(::Ifc2x3::IfcMetric* v);
    ::Ifc2x3::IfcObjectiveEnum::Value ObjectiveQualifier() const;
    void setObjectiveQualifier(::Ifc2x3::IfcObjectiveEnum::Value v);
    bool hasUserDefinedQualifier() const;
    std::string UserDefinedQualifier() const;
    void setUserDefinedQualifier(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcObjective (IfcEntityInstanceData* e);
    IfcObjective (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc2x3::IfcActorSelect* v5_CreatingActor, ::Ifc2x3::IfcDateTimeSelect* v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, ::Ifc2x3::IfcMetric* v8_BenchmarkValues, ::Ifc2x3::IfcMetric* v9_ResultValues, ::Ifc2x3::IfcObjectiveEnum::Value v10_ObjectiveQualifier, boost::optional< std::string > v11_UserDefinedQualifier);
    typedef IfcTemplatedEntityList< IfcObjective > list;
};

class IFC_PARSE_API IfcOpticalMaterialProperties : public IfcMaterialProperties {
public:
    bool hasVisibleTransmittance() const;
    double VisibleTransmittance() const;
    void setVisibleTransmittance(double v);
    bool hasSolarTransmittance() const;
    double SolarTransmittance() const;
    void setSolarTransmittance(double v);
    bool hasThermalIrTransmittance() const;
    double ThermalIrTransmittance() const;
    void setThermalIrTransmittance(double v);
    bool hasThermalIrEmissivityBack() const;
    double ThermalIrEmissivityBack() const;
    void setThermalIrEmissivityBack(double v);
    bool hasThermalIrEmissivityFront() const;
    double ThermalIrEmissivityFront() const;
    void setThermalIrEmissivityFront(double v);
    bool hasVisibleReflectanceBack() const;
    double VisibleReflectanceBack() const;
    void setVisibleReflectanceBack(double v);
    bool hasVisibleReflectanceFront() const;
    double VisibleReflectanceFront() const;
    void setVisibleReflectanceFront(double v);
    bool hasSolarReflectanceFront() const;
    double SolarReflectanceFront() const;
    void setSolarReflectanceFront(double v);
    bool hasSolarReflectanceBack() const;
    double SolarReflectanceBack() const;
    void setSolarReflectanceBack(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOpticalMaterialProperties (IfcEntityInstanceData* e);
    IfcOpticalMaterialProperties (::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcOpticalMaterialProperties > list;
};
class IFC_PARSE_API IfcOrganization : public IfcUtil::IfcBaseEntity {
public:
    bool hasId() const;
    std::string Id() const;
    void setId(std::string v);
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasRoles() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcActorRole >::ptr Roles() const;
    void setRoles(IfcTemplatedEntityList< ::Ifc2x3::IfcActorRole >::ptr v);
    bool hasAddresses() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcAddress >::ptr Addresses() const;
    void setAddresses(IfcTemplatedEntityList< ::Ifc2x3::IfcAddress >::ptr v);
        IfcTemplatedEntityList< IfcOrganizationRelationship >::ptr IsRelatedBy() const; // INVERSE IfcOrganizationRelationship::RelatedOrganizations
    IfcTemplatedEntityList< IfcOrganizationRelationship >::ptr Relates() const; // INVERSE IfcOrganizationRelationship::RelatingOrganization
    IfcTemplatedEntityList< IfcPersonAndOrganization >::ptr Engages() const; // INVERSE IfcPersonAndOrganization::TheOrganization
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOrganization (IfcEntityInstanceData* e);
    IfcOrganization (boost::optional< std::string > v1_Id, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcActorRole >::ptr > v4_Roles, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcAddress >::ptr > v5_Addresses);
    typedef IfcTemplatedEntityList< IfcOrganization > list;
};
class IFC_PARSE_API IfcOrganizationRelationship : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    ::Ifc2x3::IfcOrganization* RelatingOrganization() const;
    void setRelatingOrganization(::Ifc2x3::IfcOrganization* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcOrganization >::ptr RelatedOrganizations() const;
    void setRelatedOrganizations(IfcTemplatedEntityList< ::Ifc2x3::IfcOrganization >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOrganizationRelationship (IfcEntityInstanceData* e);
    IfcOrganizationRelationship (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcOrganization* v3_RelatingOrganization, IfcTemplatedEntityList< ::Ifc2x3::IfcOrganization >::ptr v4_RelatedOrganizations);
    typedef IfcTemplatedEntityList< IfcOrganizationRelationship > list;
};
class IFC_PARSE_API IfcOwnerHistory : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcPersonAndOrganization* OwningUser() const;
    void setOwningUser(::Ifc2x3::IfcPersonAndOrganization* v);
    ::Ifc2x3::IfcApplication* OwningApplication() const;
    void setOwningApplication(::Ifc2x3::IfcApplication* v);
    bool hasState() const;
    ::Ifc2x3::IfcStateEnum::Value State() const;
    void setState(::Ifc2x3::IfcStateEnum::Value v);
    ::Ifc2x3::IfcChangeActionEnum::Value ChangeAction() const;
    void setChangeAction(::Ifc2x3::IfcChangeActionEnum::Value v);
    bool hasLastModifiedDate() const;
    int LastModifiedDate() const;
    void setLastModifiedDate(int v);
    bool hasLastModifyingUser() const;
    ::Ifc2x3::IfcPersonAndOrganization* LastModifyingUser() const;
    void setLastModifyingUser(::Ifc2x3::IfcPersonAndOrganization* v);
    bool hasLastModifyingApplication() const;
    ::Ifc2x3::IfcApplication* LastModifyingApplication() const;
    void setLastModifyingApplication(::Ifc2x3::IfcApplication* v);
    int CreationDate() const;
    void setCreationDate(int v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOwnerHistory (IfcEntityInstanceData* e);
    IfcOwnerHistory (::Ifc2x3::IfcPersonAndOrganization* v1_OwningUser, ::Ifc2x3::IfcApplication* v2_OwningApplication, boost::optional< ::Ifc2x3::IfcStateEnum::Value > v3_State, ::Ifc2x3::IfcChangeActionEnum::Value v4_ChangeAction, boost::optional< int > v5_LastModifiedDate, ::Ifc2x3::IfcPersonAndOrganization* v6_LastModifyingUser, ::Ifc2x3::IfcApplication* v7_LastModifyingApplication, int v8_CreationDate);
    typedef IfcTemplatedEntityList< IfcOwnerHistory > list;
};
class IFC_PARSE_API IfcPerson : public IfcUtil::IfcBaseEntity {
public:
    bool hasId() const;
    std::string Id() const;
    void setId(std::string v);
    bool hasFamilyName() const;
    std::string FamilyName() const;
    void setFamilyName(std::string v);
    bool hasGivenName() const;
    std::string GivenName() const;
    void setGivenName(std::string v);
    bool hasMiddleNames() const;
    std::vector< std::string > /*[1:?]*/ MiddleNames() const;
    void setMiddleNames(std::vector< std::string > /*[1:?]*/ v);
    bool hasPrefixTitles() const;
    std::vector< std::string > /*[1:?]*/ PrefixTitles() const;
    void setPrefixTitles(std::vector< std::string > /*[1:?]*/ v);
    bool hasSuffixTitles() const;
    std::vector< std::string > /*[1:?]*/ SuffixTitles() const;
    void setSuffixTitles(std::vector< std::string > /*[1:?]*/ v);
    bool hasRoles() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcActorRole >::ptr Roles() const;
    void setRoles(IfcTemplatedEntityList< ::Ifc2x3::IfcActorRole >::ptr v);
    bool hasAddresses() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcAddress >::ptr Addresses() const;
    void setAddresses(IfcTemplatedEntityList< ::Ifc2x3::IfcAddress >::ptr v);
        IfcTemplatedEntityList< IfcPersonAndOrganization >::ptr EngagedIn() const; // INVERSE IfcPersonAndOrganization::ThePerson
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPerson (IfcEntityInstanceData* e);
    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< ::Ifc2x3::IfcActorRole >::ptr > v7_Roles, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcAddress >::ptr > v8_Addresses);
    typedef IfcTemplatedEntityList< IfcPerson > list;
};
class IFC_PARSE_API IfcPersonAndOrganization : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcPerson* ThePerson() const;
    void setThePerson(::Ifc2x3::IfcPerson* v);
    ::Ifc2x3::IfcOrganization* TheOrganization() const;
    void setTheOrganization(::Ifc2x3::IfcOrganization* v);
    bool hasRoles() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcActorRole >::ptr Roles() const;
    void setRoles(IfcTemplatedEntityList< ::Ifc2x3::IfcActorRole >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPersonAndOrganization (IfcEntityInstanceData* e);
    IfcPersonAndOrganization (::Ifc2x3::IfcPerson* v1_ThePerson, ::Ifc2x3::IfcOrganization* v2_TheOrganization, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcActorRole >::ptr > v3_Roles);
    typedef IfcTemplatedEntityList< IfcPersonAndOrganization > list;
};
class IFC_PARSE_API IfcPhysicalQuantity : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        IfcTemplatedEntityList< IfcPhysicalComplexQuantity >::ptr PartOfComplex() const; // INVERSE IfcPhysicalComplexQuantity::HasQuantities
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPhysicalQuantity (IfcEntityInstanceData* e);
    IfcPhysicalQuantity (std::string v1_Name, boost::optional< std::string > v2_Description);
    typedef IfcTemplatedEntityList< IfcPhysicalQuantity > list;
};
class IFC_PARSE_API IfcPhysicalSimpleQuantity : public IfcPhysicalQuantity {
public:
    bool hasUnit() const;
    ::Ifc2x3::IfcNamedUnit* Unit() const;
    void setUnit(::Ifc2x3::IfcNamedUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPhysicalSimpleQuantity (IfcEntityInstanceData* e);
    IfcPhysicalSimpleQuantity (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcNamedUnit* v3_Unit);
    typedef IfcTemplatedEntityList< IfcPhysicalSimpleQuantity > list;
};
class IFC_PARSE_API IfcPostalAddress : public IfcAddress {
public:
    bool hasInternalLocation() const;
    std::string InternalLocation() const;
    void setInternalLocation(std::string v);
    bool hasAddressLines() const;
    std::vector< std::string > /*[1:?]*/ AddressLines() const;
    void setAddressLines(std::vector< std::string > /*[1:?]*/ v);
    bool hasPostalBox() const;
    std::string PostalBox() const;
    void setPostalBox(std::string v);
    bool hasTown() const;
    std::string Town() const;
    void setTown(std::string v);
    bool hasRegion() const;
    std::string Region() const;
    void setRegion(std::string v);
    bool hasPostalCode() const;
    std::string PostalCode() const;
    void setPostalCode(std::string v);
    bool hasCountry() const;
    std::string Country() const;
    void setCountry(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPostalAddress (IfcEntityInstanceData* e);
    IfcPostalAddress (boost::optional< ::Ifc2x3::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::string > v4_InternalLocation, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_AddressLines, boost::optional< std::string > v6_PostalBox, boost::optional< std::string > v7_Town, boost::optional< std::string > v8_Region, boost::optional< std::string > v9_PostalCode, boost::optional< std::string > v10_Country);
    typedef IfcTemplatedEntityList< IfcPostalAddress > list;
};
class IFC_PARSE_API IfcPreDefinedItem : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedItem (IfcEntityInstanceData* e);
    IfcPreDefinedItem (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedItem > list;
};
class IFC_PARSE_API IfcPreDefinedSymbol : public IfcPreDefinedItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedSymbol (IfcEntityInstanceData* e);
    IfcPreDefinedSymbol (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedSymbol > list;
};

class IFC_PARSE_API IfcPreDefinedTerminatorSymbol : public IfcPreDefinedSymbol {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedTerminatorSymbol (IfcEntityInstanceData* e);
    IfcPreDefinedTerminatorSymbol (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedTerminatorSymbol > list;
};
class IFC_PARSE_API IfcPreDefinedTextFont : public IfcPreDefinedItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedTextFont (IfcEntityInstanceData* e);
    IfcPreDefinedTextFont (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedTextFont > list;
};
class IFC_PARSE_API IfcPresentationLayerAssignment : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    IfcEntityList::ptr AssignedItems() const;
    void setAssignedItems(IfcEntityList::ptr v);
    bool hasIdentifier() const;
    std::string Identifier() const;
    void setIdentifier(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPresentationLayerAssignment (IfcEntityInstanceData* e);
    IfcPresentationLayerAssignment (std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier);
    typedef IfcTemplatedEntityList< IfcPresentationLayerAssignment > list;
};
class IFC_PARSE_API IfcPresentationLayerWithStyle : public IfcPresentationLayerAssignment {
public:
    bool LayerOn() const;
    void setLayerOn(bool v);
    bool LayerFrozen() const;
    void setLayerFrozen(bool v);
    bool LayerBlocked() const;
    void setLayerBlocked(bool v);
    IfcEntityList::ptr LayerStyles() const;
    void setLayerStyles(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPresentationLayerWithStyle (IfcEntityInstanceData* e);
    IfcPresentationLayerWithStyle (std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier, bool v5_LayerOn, bool v6_LayerFrozen, bool v7_LayerBlocked, IfcEntityList::ptr v8_LayerStyles);
    typedef IfcTemplatedEntityList< IfcPresentationLayerWithStyle > list;
};
class IFC_PARSE_API IfcPresentationStyle : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPresentationStyle (IfcEntityInstanceData* e);
    IfcPresentationStyle (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcPresentationStyle > list;
};
class IFC_PARSE_API IfcPresentationStyleAssignment : public IfcUtil::IfcBaseEntity {
public:
    IfcEntityList::ptr Styles() const;
    void setStyles(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPresentationStyleAssignment (IfcEntityInstanceData* e);
    IfcPresentationStyleAssignment (IfcEntityList::ptr v1_Styles);
    typedef IfcTemplatedEntityList< IfcPresentationStyleAssignment > list;
};
class IFC_PARSE_API IfcProductRepresentation : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentation >::ptr Representations() const;
    void setRepresentations(IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentation >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProductRepresentation (IfcEntityInstanceData* e);
    IfcProductRepresentation (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentation >::ptr v3_Representations);
    typedef IfcTemplatedEntityList< IfcProductRepresentation > list;
};

class IFC_PARSE_API IfcProductsOfCombustionProperties : public IfcMaterialProperties {
public:
    bool hasSpecificHeatCapacity() const;
    double SpecificHeatCapacity() const;
    void setSpecificHeatCapacity(double v);
    bool hasN20Content() const;
    double N20Content() const;
    void setN20Content(double v);
    bool hasCOContent() const;
    double COContent() const;
    void setCOContent(double v);
    bool hasCO2Content() const;
    double CO2Content() const;
    void setCO2Content(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProductsOfCombustionProperties (IfcEntityInstanceData* e);
    IfcProductsOfCombustionProperties (::Ifc2x3::IfcMaterial* v1_Material, boost::optional< double > v2_SpecificHeatCapacity, boost::optional< double > v3_N20Content, boost::optional< double > v4_COContent, boost::optional< double > v5_CO2Content);
    typedef IfcTemplatedEntityList< IfcProductsOfCombustionProperties > list;
};
class IFC_PARSE_API IfcProfileDef : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcProfileTypeEnum::Value ProfileType() const;
    void setProfileType(::Ifc2x3::IfcProfileTypeEnum::Value v);
    bool hasProfileName() const;
    std::string ProfileName() const;
    void setProfileName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProfileDef (IfcEntityInstanceData* e);
    IfcProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName);
    typedef IfcTemplatedEntityList< IfcProfileDef > list;
};
class IFC_PARSE_API IfcProfileProperties : public IfcUtil::IfcBaseEntity {
public:
    bool hasProfileName() const;
    std::string ProfileName() const;
    void setProfileName(std::string v);
    bool hasProfileDefinition() const;
    ::Ifc2x3::IfcProfileDef* ProfileDefinition() const;
    void setProfileDefinition(::Ifc2x3::IfcProfileDef* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProfileProperties (IfcEntityInstanceData* e);
    IfcProfileProperties (boost::optional< std::string > v1_ProfileName, ::Ifc2x3::IfcProfileDef* v2_ProfileDefinition);
    typedef IfcTemplatedEntityList< IfcProfileProperties > list;
};
class IFC_PARSE_API IfcProperty : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        IfcTemplatedEntityList< IfcPropertyDependencyRelationship >::ptr PropertyForDependance() const; // INVERSE IfcPropertyDependencyRelationship::DependingProperty
    IfcTemplatedEntityList< IfcPropertyDependencyRelationship >::ptr PropertyDependsOn() const; // INVERSE IfcPropertyDependencyRelationship::DependantProperty
    IfcTemplatedEntityList< IfcComplexProperty >::ptr PartOfComplex() const; // INVERSE IfcComplexProperty::HasProperties
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProperty (IfcEntityInstanceData* e);
    IfcProperty (std::string v1_Name, boost::optional< std::string > v2_Description);
    typedef IfcTemplatedEntityList< IfcProperty > list;
};

class IFC_PARSE_API IfcPropertyConstraintRelationship : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcConstraint* RelatingConstraint() const;
    void setRelatingConstraint(::Ifc2x3::IfcConstraint* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr RelatedProperties() const;
    void setRelatedProperties(IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyConstraintRelationship (IfcEntityInstanceData* e);
    IfcPropertyConstraintRelationship (::Ifc2x3::IfcConstraint* v1_RelatingConstraint, IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v2_RelatedProperties, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcPropertyConstraintRelationship > list;
};
class IFC_PARSE_API IfcPropertyDependencyRelationship : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcProperty* DependingProperty() const;
    void setDependingProperty(::Ifc2x3::IfcProperty* v);
    ::Ifc2x3::IfcProperty* DependantProperty() const;
    void setDependantProperty(::Ifc2x3::IfcProperty* v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasExpression() const;
    std::string Expression() const;
    void setExpression(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyDependencyRelationship (IfcEntityInstanceData* e);
    IfcPropertyDependencyRelationship (::Ifc2x3::IfcProperty* v1_DependingProperty, ::Ifc2x3::IfcProperty* v2_DependantProperty, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_Expression);
    typedef IfcTemplatedEntityList< IfcPropertyDependencyRelationship > list;
};
class IFC_PARSE_API IfcPropertyEnumeration : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    IfcEntityList::ptr EnumerationValues() const;
    void setEnumerationValues(IfcEntityList::ptr v);
    bool hasUnit() const;
    ::Ifc2x3::IfcUnit* Unit() const;
    void setUnit(::Ifc2x3::IfcUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyEnumeration (IfcEntityInstanceData* e);
    IfcPropertyEnumeration (std::string v1_Name, IfcEntityList::ptr v2_EnumerationValues, ::Ifc2x3::IfcUnit* v3_Unit);
    typedef IfcTemplatedEntityList< IfcPropertyEnumeration > list;
};
class IFC_PARSE_API IfcQuantityArea : public IfcPhysicalSimpleQuantity {
public:
    double AreaValue() const;
    void setAreaValue(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityArea (IfcEntityInstanceData* e);
    IfcQuantityArea (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcNamedUnit* v3_Unit, double v4_AreaValue);
    typedef IfcTemplatedEntityList< IfcQuantityArea > list;
};
class IFC_PARSE_API IfcQuantityCount : public IfcPhysicalSimpleQuantity {
public:
    double CountValue() const;
    void setCountValue(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityCount (IfcEntityInstanceData* e);
    IfcQuantityCount (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcNamedUnit* v3_Unit, double v4_CountValue);
    typedef IfcTemplatedEntityList< IfcQuantityCount > list;
};
class IFC_PARSE_API IfcQuantityLength : public IfcPhysicalSimpleQuantity {
public:
    double LengthValue() const;
    void setLengthValue(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityLength (IfcEntityInstanceData* e);
    IfcQuantityLength (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcNamedUnit* v3_Unit, double v4_LengthValue);
    typedef IfcTemplatedEntityList< IfcQuantityLength > list;
};
class IFC_PARSE_API IfcQuantityTime : public IfcPhysicalSimpleQuantity {
public:
    double TimeValue() const;
    void setTimeValue(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityTime (IfcEntityInstanceData* e);
    IfcQuantityTime (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcNamedUnit* v3_Unit, double v4_TimeValue);
    typedef IfcTemplatedEntityList< IfcQuantityTime > list;
};
class IFC_PARSE_API IfcQuantityVolume : public IfcPhysicalSimpleQuantity {
public:
    double VolumeValue() const;
    void setVolumeValue(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityVolume (IfcEntityInstanceData* e);
    IfcQuantityVolume (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcNamedUnit* v3_Unit, double v4_VolumeValue);
    typedef IfcTemplatedEntityList< IfcQuantityVolume > list;
};
class IFC_PARSE_API IfcQuantityWeight : public IfcPhysicalSimpleQuantity {
public:
    double WeightValue() const;
    void setWeightValue(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityWeight (IfcEntityInstanceData* e);
    IfcQuantityWeight (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcNamedUnit* v3_Unit, double v4_WeightValue);
    typedef IfcTemplatedEntityList< IfcQuantityWeight > list;
};

class IFC_PARSE_API IfcReferencesValueDocument : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcDocumentSelect* ReferencedDocument() const;
    void setReferencedDocument(::Ifc2x3::IfcDocumentSelect* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcAppliedValue >::ptr ReferencingValues() const;
    void setReferencingValues(IfcTemplatedEntityList< ::Ifc2x3::IfcAppliedValue >::ptr v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReferencesValueDocument (IfcEntityInstanceData* e);
    IfcReferencesValueDocument (::Ifc2x3::IfcDocumentSelect* v1_ReferencedDocument, IfcTemplatedEntityList< ::Ifc2x3::IfcAppliedValue >::ptr v2_ReferencingValues, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcReferencesValueDocument > list;
};
class IFC_PARSE_API IfcReinforcementBarProperties : public IfcUtil::IfcBaseEntity {
public:
    double TotalCrossSectionArea() const;
    void setTotalCrossSectionArea(double v);
    std::string SteelGrade() const;
    void setSteelGrade(std::string v);
    bool hasBarSurface() const;
    ::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value BarSurface() const;
    void setBarSurface(::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value v);
    bool hasEffectiveDepth() const;
    double EffectiveDepth() const;
    void setEffectiveDepth(double v);
    bool hasNominalBarDiameter() const;
    double NominalBarDiameter() const;
    void setNominalBarDiameter(double v);
    bool hasBarCount() const;
    double BarCount() const;
    void setBarCount(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcementBarProperties (IfcEntityInstanceData* e);
    IfcReinforcementBarProperties (double v1_TotalCrossSectionArea, std::string v2_SteelGrade, boost::optional< ::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value > v3_BarSurface, boost::optional< double > v4_EffectiveDepth, boost::optional< double > v5_NominalBarDiameter, boost::optional< double > v6_BarCount);
    typedef IfcTemplatedEntityList< IfcReinforcementBarProperties > list;
};

class IFC_PARSE_API IfcRelaxation : public IfcUtil::IfcBaseEntity {
public:
    double RelaxationValue() const;
    void setRelaxationValue(double v);
    double InitialStress() const;
    void setInitialStress(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelaxation (IfcEntityInstanceData* e);
    IfcRelaxation (double v1_RelaxationValue, double v2_InitialStress);
    typedef IfcTemplatedEntityList< IfcRelaxation > list;
};
class IFC_PARSE_API IfcRepresentation : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcRepresentationContext* ContextOfItems() const;
    void setContextOfItems(::Ifc2x3::IfcRepresentationContext* v);
    bool hasRepresentationIdentifier() const;
    std::string RepresentationIdentifier() const;
    void setRepresentationIdentifier(std::string v);
    bool hasRepresentationType() const;
    std::string RepresentationType() const;
    void setRepresentationType(std::string v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationItem >::ptr Items() const;
    void setItems(IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationItem >::ptr v);
        IfcTemplatedEntityList< IfcRepresentationMap >::ptr RepresentationMap() const; // INVERSE IfcRepresentationMap::MappedRepresentation
    IfcTemplatedEntityList< IfcPresentationLayerAssignment >::ptr LayerAssignments() const; // INVERSE IfcPresentationLayerAssignment::AssignedItems
    IfcTemplatedEntityList< IfcProductRepresentation >::ptr OfProductRepresentation() const; // INVERSE IfcProductRepresentation::Representations
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRepresentation (IfcEntityInstanceData* e);
    IfcRepresentation (::Ifc2x3::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcRepresentation > list;
};
class IFC_PARSE_API IfcRepresentationContext : public IfcUtil::IfcBaseEntity {
public:
    bool hasContextIdentifier() const;
    std::string ContextIdentifier() const;
    void setContextIdentifier(std::string v);
    bool hasContextType() const;
    std::string ContextType() const;
    void setContextType(std::string v);
        IfcTemplatedEntityList< IfcRepresentation >::ptr RepresentationsInContext() const; // INVERSE IfcRepresentation::ContextOfItems
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRepresentationContext (IfcEntityInstanceData* e);
    IfcRepresentationContext (boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType);
    typedef IfcTemplatedEntityList< IfcRepresentationContext > list;
};
class IFC_PARSE_API IfcRepresentationItem : public IfcUtil::IfcBaseEntity {
public:
        IfcTemplatedEntityList< IfcPresentationLayerAssignment >::ptr LayerAssignments() const; // INVERSE IfcPresentationLayerAssignment::AssignedItems
    IfcTemplatedEntityList< IfcStyledItem >::ptr StyledByItem() const; // INVERSE IfcStyledItem::Item
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRepresentationItem (IfcEntityInstanceData* e);
    IfcRepresentationItem ();
    typedef IfcTemplatedEntityList< IfcRepresentationItem > list;
};
class IFC_PARSE_API IfcRepresentationMap : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcAxis2Placement* MappingOrigin() const;
    void setMappingOrigin(::Ifc2x3::IfcAxis2Placement* v);
    ::Ifc2x3::IfcRepresentation* MappedRepresentation() const;
    void setMappedRepresentation(::Ifc2x3::IfcRepresentation* v);
        IfcTemplatedEntityList< IfcMappedItem >::ptr MapUsage() const; // INVERSE IfcMappedItem::MappingSource
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRepresentationMap (IfcEntityInstanceData* e);
    IfcRepresentationMap (::Ifc2x3::IfcAxis2Placement* v1_MappingOrigin, ::Ifc2x3::IfcRepresentation* v2_MappedRepresentation);
    typedef IfcTemplatedEntityList< IfcRepresentationMap > list;
};

class IFC_PARSE_API IfcRibPlateProfileProperties : public IfcProfileProperties {
public:
    bool hasThickness() const;
    double Thickness() const;
    void setThickness(double v);
    bool hasRibHeight() const;
    double RibHeight() const;
    void setRibHeight(double v);
    bool hasRibWidth() const;
    double RibWidth() const;
    void setRibWidth(double v);
    bool hasRibSpacing() const;
    double RibSpacing() const;
    void setRibSpacing(double v);
    ::Ifc2x3::IfcRibPlateDirectionEnum::Value Direction() const;
    void setDirection(::Ifc2x3::IfcRibPlateDirectionEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRibPlateProfileProperties (IfcEntityInstanceData* e);
    IfcRibPlateProfileProperties (boost::optional< std::string > v1_ProfileName, ::Ifc2x3::IfcProfileDef* v2_ProfileDefinition, boost::optional< double > v3_Thickness, boost::optional< double > v4_RibHeight, boost::optional< double > v5_RibWidth, boost::optional< double > v6_RibSpacing, ::Ifc2x3::IfcRibPlateDirectionEnum::Value v7_Direction);
    typedef IfcTemplatedEntityList< IfcRibPlateProfileProperties > list;
};
class IFC_PARSE_API IfcRoot : public IfcUtil::IfcBaseEntity {
public:
    std::string GlobalId() const;
    void setGlobalId(std::string v);
    ::Ifc2x3::IfcOwnerHistory* OwnerHistory() const;
    void setOwnerHistory(::Ifc2x3::IfcOwnerHistory* v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRoot (IfcEntityInstanceData* e);
    IfcRoot (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcRoot > list;
};
class IFC_PARSE_API IfcSIUnit : public IfcNamedUnit {
public:
    bool hasPrefix() const;
    ::Ifc2x3::IfcSIPrefix::Value Prefix() const;
    void setPrefix(::Ifc2x3::IfcSIPrefix::Value v);
    ::Ifc2x3::IfcSIUnitName::Value Name() const;
    void setName(::Ifc2x3::IfcSIUnitName::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSIUnit (IfcEntityInstanceData* e);
    IfcSIUnit (::Ifc2x3::IfcUnitEnum::Value v2_UnitType, boost::optional< ::Ifc2x3::IfcSIPrefix::Value > v3_Prefix, ::Ifc2x3::IfcSIUnitName::Value v4_Name);
    typedef IfcTemplatedEntityList< IfcSIUnit > list;
};
class IFC_PARSE_API IfcSectionProperties : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcSectionTypeEnum::Value SectionType() const;
    void setSectionType(::Ifc2x3::IfcSectionTypeEnum::Value v);
    ::Ifc2x3::IfcProfileDef* StartProfile() const;
    void setStartProfile(::Ifc2x3::IfcProfileDef* v);
    bool hasEndProfile() const;
    ::Ifc2x3::IfcProfileDef* EndProfile() const;
    void setEndProfile(::Ifc2x3::IfcProfileDef* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSectionProperties (IfcEntityInstanceData* e);
    IfcSectionProperties (::Ifc2x3::IfcSectionTypeEnum::Value v1_SectionType, ::Ifc2x3::IfcProfileDef* v2_StartProfile, ::Ifc2x3::IfcProfileDef* v3_EndProfile);
    typedef IfcTemplatedEntityList< IfcSectionProperties > list;
};
class IFC_PARSE_API IfcSectionReinforcementProperties : public IfcUtil::IfcBaseEntity {
public:
    double LongitudinalStartPosition() const;
    void setLongitudinalStartPosition(double v);
    double LongitudinalEndPosition() const;
    void setLongitudinalEndPosition(double v);
    bool hasTransversePosition() const;
    double TransversePosition() const;
    void setTransversePosition(double v);
    ::Ifc2x3::IfcReinforcingBarRoleEnum::Value ReinforcementRole() const;
    void setReinforcementRole(::Ifc2x3::IfcReinforcingBarRoleEnum::Value v);
    ::Ifc2x3::IfcSectionProperties* SectionDefinition() const;
    void setSectionDefinition(::Ifc2x3::IfcSectionProperties* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcReinforcementBarProperties >::ptr CrossSectionReinforcementDefinitions() const;
    void setCrossSectionReinforcementDefinitions(IfcTemplatedEntityList< ::Ifc2x3::IfcReinforcementBarProperties >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSectionReinforcementProperties (IfcEntityInstanceData* e);
    IfcSectionReinforcementProperties (double v1_LongitudinalStartPosition, double v2_LongitudinalEndPosition, boost::optional< double > v3_TransversePosition, ::Ifc2x3::IfcReinforcingBarRoleEnum::Value v4_ReinforcementRole, ::Ifc2x3::IfcSectionProperties* v5_SectionDefinition, IfcTemplatedEntityList< ::Ifc2x3::IfcReinforcementBarProperties >::ptr v6_CrossSectionReinforcementDefinitions);
    typedef IfcTemplatedEntityList< IfcSectionReinforcementProperties > list;
};
class IFC_PARSE_API IfcShapeAspect : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcShapeModel >::ptr ShapeRepresentations() const;
    void setShapeRepresentations(IfcTemplatedEntityList< ::Ifc2x3::IfcShapeModel >::ptr v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool ProductDefinitional() const;
    void setProductDefinitional(bool v);
    ::Ifc2x3::IfcProductDefinitionShape* PartOfProductDefinitionShape() const;
    void setPartOfProductDefinitionShape(::Ifc2x3::IfcProductDefinitionShape* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcShapeAspect (IfcEntityInstanceData* e);
    IfcShapeAspect (IfcTemplatedEntityList< ::Ifc2x3::IfcShapeModel >::ptr v1_ShapeRepresentations, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, bool v4_ProductDefinitional, ::Ifc2x3::IfcProductDefinitionShape* v5_PartOfProductDefinitionShape);
    typedef IfcTemplatedEntityList< IfcShapeAspect > list;
};
class IFC_PARSE_API IfcShapeModel : public IfcRepresentation {
public:
        IfcTemplatedEntityList< IfcShapeAspect >::ptr OfShapeAspect() const; // INVERSE IfcShapeAspect::ShapeRepresentations
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcShapeModel (IfcEntityInstanceData* e);
    IfcShapeModel (::Ifc2x3::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcShapeModel > list;
};
class IFC_PARSE_API IfcShapeRepresentation : public IfcShapeModel {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcShapeRepresentation (IfcEntityInstanceData* e);
    IfcShapeRepresentation (::Ifc2x3::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcShapeRepresentation > list;
};
class IFC_PARSE_API IfcSimpleProperty : public IfcProperty {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSimpleProperty (IfcEntityInstanceData* e);
    IfcSimpleProperty (std::string v1_Name, boost::optional< std::string > v2_Description);
    typedef IfcTemplatedEntityList< IfcSimpleProperty > list;
};
class IFC_PARSE_API IfcStructuralConnectionCondition : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralConnectionCondition (IfcEntityInstanceData* e);
    IfcStructuralConnectionCondition (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcStructuralConnectionCondition > list;
};
class IFC_PARSE_API IfcStructuralLoad : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoad (IfcEntityInstanceData* e);
    IfcStructuralLoad (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcStructuralLoad > list;
};
class IFC_PARSE_API IfcStructuralLoadStatic : public IfcStructuralLoad {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadStatic (IfcEntityInstanceData* e);
    IfcStructuralLoadStatic (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcStructuralLoadStatic > list;
};
class IFC_PARSE_API IfcStructuralLoadTemperature : public IfcStructuralLoadStatic {
public:
    bool hasDeltaT_Constant() const;
    double DeltaT_Constant() const;
    void setDeltaT_Constant(double v);
    bool hasDeltaT_Y() const;
    double DeltaT_Y() const;
    void setDeltaT_Y(double v);
    bool hasDeltaT_Z() const;
    double DeltaT_Z() const;
    void setDeltaT_Z(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadTemperature (IfcEntityInstanceData* e);
    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);
    typedef IfcTemplatedEntityList< IfcStructuralLoadTemperature > list;
};
class IFC_PARSE_API IfcStyleModel : public IfcRepresentation {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStyleModel (IfcEntityInstanceData* e);
    IfcStyleModel (::Ifc2x3::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcStyleModel > list;
};
class IFC_PARSE_API IfcStyledItem : public IfcRepresentationItem {
public:
    bool hasItem() const;
    ::Ifc2x3::IfcRepresentationItem* Item() const;
    void setItem(::Ifc2x3::IfcRepresentationItem* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr Styles() const;
    void setStyles(IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStyledItem (IfcEntityInstanceData* e);
    IfcStyledItem (::Ifc2x3::IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcStyledItem > list;
};
class IFC_PARSE_API IfcStyledRepresentation : public IfcStyleModel {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStyledRepresentation (IfcEntityInstanceData* e);
    IfcStyledRepresentation (::Ifc2x3::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcStyledRepresentation > list;
};
class IFC_PARSE_API IfcSurfaceStyle : public IfcPresentationStyle {
public:
    ::Ifc2x3::IfcSurfaceSide::Value Side() const;
    void setSide(::Ifc2x3::IfcSurfaceSide::Value v);
    IfcEntityList::ptr Styles() const;
    void setStyles(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyle (IfcEntityInstanceData* e);
    IfcSurfaceStyle (boost::optional< std::string > v1_Name, ::Ifc2x3::IfcSurfaceSide::Value v2_Side, IfcEntityList::ptr v3_Styles);
    typedef IfcTemplatedEntityList< IfcSurfaceStyle > list;
};
class IFC_PARSE_API IfcSurfaceStyleLighting : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcColourRgb* DiffuseTransmissionColour() const;
    void setDiffuseTransmissionColour(::Ifc2x3::IfcColourRgb* v);
    ::Ifc2x3::IfcColourRgb* DiffuseReflectionColour() const;
    void setDiffuseReflectionColour(::Ifc2x3::IfcColourRgb* v);
    ::Ifc2x3::IfcColourRgb* TransmissionColour() const;
    void setTransmissionColour(::Ifc2x3::IfcColourRgb* v);
    ::Ifc2x3::IfcColourRgb* ReflectanceColour() const;
    void setReflectanceColour(::Ifc2x3::IfcColourRgb* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyleLighting (IfcEntityInstanceData* e);
    IfcSurfaceStyleLighting (::Ifc2x3::IfcColourRgb* v1_DiffuseTransmissionColour, ::Ifc2x3::IfcColourRgb* v2_DiffuseReflectionColour, ::Ifc2x3::IfcColourRgb* v3_TransmissionColour, ::Ifc2x3::IfcColourRgb* v4_ReflectanceColour);
    typedef IfcTemplatedEntityList< IfcSurfaceStyleLighting > list;
};
class IFC_PARSE_API IfcSurfaceStyleRefraction : public IfcUtil::IfcBaseEntity {
public:
    bool hasRefractionIndex() const;
    double RefractionIndex() const;
    void setRefractionIndex(double v);
    bool hasDispersionFactor() const;
    double DispersionFactor() const;
    void setDispersionFactor(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyleRefraction (IfcEntityInstanceData* e);
    IfcSurfaceStyleRefraction (boost::optional< double > v1_RefractionIndex, boost::optional< double > v2_DispersionFactor);
    typedef IfcTemplatedEntityList< IfcSurfaceStyleRefraction > list;
};
class IFC_PARSE_API IfcSurfaceStyleShading : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcColourRgb* SurfaceColour() const;
    void setSurfaceColour(::Ifc2x3::IfcColourRgb* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyleShading (IfcEntityInstanceData* e);
    IfcSurfaceStyleShading (::Ifc2x3::IfcColourRgb* v1_SurfaceColour);
    typedef IfcTemplatedEntityList< IfcSurfaceStyleShading > list;
};
class IFC_PARSE_API IfcSurfaceStyleWithTextures : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcSurfaceTexture >::ptr Textures() const;
    void setTextures(IfcTemplatedEntityList< ::Ifc2x3::IfcSurfaceTexture >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyleWithTextures (IfcEntityInstanceData* e);
    IfcSurfaceStyleWithTextures (IfcTemplatedEntityList< ::Ifc2x3::IfcSurfaceTexture >::ptr v1_Textures);
    typedef IfcTemplatedEntityList< IfcSurfaceStyleWithTextures > list;
};
class IFC_PARSE_API IfcSurfaceTexture : public IfcUtil::IfcBaseEntity {
public:
    bool RepeatS() const;
    void setRepeatS(bool v);
    bool RepeatT() const;
    void setRepeatT(bool v);
    ::Ifc2x3::IfcSurfaceTextureEnum::Value TextureType() const;
    void setTextureType(::Ifc2x3::IfcSurfaceTextureEnum::Value v);
    bool hasTextureTransform() const;
    ::Ifc2x3::IfcCartesianTransformationOperator2D* TextureTransform() const;
    void setTextureTransform(::Ifc2x3::IfcCartesianTransformationOperator2D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceTexture (IfcEntityInstanceData* e);
    IfcSurfaceTexture (bool v1_RepeatS, bool v2_RepeatT, ::Ifc2x3::IfcSurfaceTextureEnum::Value v3_TextureType, ::Ifc2x3::IfcCartesianTransformationOperator2D* v4_TextureTransform);
    typedef IfcTemplatedEntityList< IfcSurfaceTexture > list;
};
class IFC_PARSE_API IfcSymbolStyle : public IfcPresentationStyle {
public:
    ::Ifc2x3::IfcSymbolStyleSelect* StyleOfSymbol() const;
    void setStyleOfSymbol(::Ifc2x3::IfcSymbolStyleSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSymbolStyle (IfcEntityInstanceData* e);
    IfcSymbolStyle (boost::optional< std::string > v1_Name, ::Ifc2x3::IfcSymbolStyleSelect* v2_StyleOfSymbol);
    typedef IfcTemplatedEntityList< IfcSymbolStyle > list;
};
class IFC_PARSE_API IfcTable : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcTableRow >::ptr Rows() const;
    void setRows(IfcTemplatedEntityList< ::Ifc2x3::IfcTableRow >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTable (IfcEntityInstanceData* e);
    IfcTable (std::string v1_Name, IfcTemplatedEntityList< ::Ifc2x3::IfcTableRow >::ptr v2_Rows);
    typedef IfcTemplatedEntityList< IfcTable > list;
};
class IFC_PARSE_API IfcTableRow : public IfcUtil::IfcBaseEntity {
public:
    IfcEntityList::ptr RowCells() const;
    void setRowCells(IfcEntityList::ptr v);
    bool IsHeading() const;
    void setIsHeading(bool v);
        IfcTemplatedEntityList< IfcTable >::ptr OfTable() const; // INVERSE IfcTable::Rows
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTableRow (IfcEntityInstanceData* e);
    IfcTableRow (IfcEntityList::ptr v1_RowCells, bool v2_IsHeading);
    typedef IfcTemplatedEntityList< IfcTableRow > list;
};
class IFC_PARSE_API IfcTelecomAddress : public IfcAddress {
public:
    bool hasTelephoneNumbers() const;
    std::vector< std::string > /*[1:?]*/ TelephoneNumbers() const;
    void setTelephoneNumbers(std::vector< std::string > /*[1:?]*/ v);
    bool hasFacsimileNumbers() const;
    std::vector< std::string > /*[1:?]*/ FacsimileNumbers() const;
    void setFacsimileNumbers(std::vector< std::string > /*[1:?]*/ v);
    bool hasPagerNumber() const;
    std::string PagerNumber() const;
    void setPagerNumber(std::string v);
    bool hasElectronicMailAddresses() const;
    std::vector< std::string > /*[1:?]*/ ElectronicMailAddresses() const;
    void setElectronicMailAddresses(std::vector< std::string > /*[1:?]*/ v);
    bool hasWWWHomePageURL() const;
    std::string WWWHomePageURL() const;
    void setWWWHomePageURL(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTelecomAddress (IfcEntityInstanceData* e);
    IfcTelecomAddress (boost::optional< ::Ifc2x3::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_TelephoneNumbers, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_FacsimileNumbers, boost::optional< std::string > v6_PagerNumber, boost::optional< std::vector< std::string > /*[1:?]*/ > v7_ElectronicMailAddresses, boost::optional< std::string > v8_WWWHomePageURL);
    typedef IfcTemplatedEntityList< IfcTelecomAddress > list;
};
class IFC_PARSE_API IfcTextStyle : public IfcPresentationStyle {
public:
    bool hasTextCharacterAppearance() const;
    ::Ifc2x3::IfcCharacterStyleSelect* TextCharacterAppearance() const;
    void setTextCharacterAppearance(::Ifc2x3::IfcCharacterStyleSelect* v);
    bool hasTextStyle() const;
    ::Ifc2x3::IfcTextStyleSelect* TextStyle() const;
    void setTextStyle(::Ifc2x3::IfcTextStyleSelect* v);
    ::Ifc2x3::IfcTextFontSelect* TextFontStyle() const;
    void setTextFontStyle(::Ifc2x3::IfcTextFontSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextStyle (IfcEntityInstanceData* e);
    IfcTextStyle (boost::optional< std::string > v1_Name, ::Ifc2x3::IfcCharacterStyleSelect* v2_TextCharacterAppearance, ::Ifc2x3::IfcTextStyleSelect* v3_TextStyle, ::Ifc2x3::IfcTextFontSelect* v4_TextFontStyle);
    typedef IfcTemplatedEntityList< IfcTextStyle > list;
};
class IFC_PARSE_API IfcTextStyleFontModel : public IfcPreDefinedTextFont {
public:
    bool hasFontFamily() const;
    std::vector< std::string > /*[1:?]*/ FontFamily() const;
    void setFontFamily(std::vector< std::string > /*[1:?]*/ v);
    bool hasFontStyle() const;
    std::string FontStyle() const;
    void setFontStyle(std::string v);
    bool hasFontVariant() const;
    std::string FontVariant() const;
    void setFontVariant(std::string v);
    bool hasFontWeight() const;
    std::string FontWeight() const;
    void setFontWeight(std::string v);
    ::Ifc2x3::IfcSizeSelect* FontSize() const;
    void setFontSize(::Ifc2x3::IfcSizeSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextStyleFontModel (IfcEntityInstanceData* e);
    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, ::Ifc2x3::IfcSizeSelect* v6_FontSize);
    typedef IfcTemplatedEntityList< IfcTextStyleFontModel > list;
};
class IFC_PARSE_API IfcTextStyleForDefinedFont : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcColour* Colour() const;
    void setColour(::Ifc2x3::IfcColour* v);
    bool hasBackgroundColour() const;
    ::Ifc2x3::IfcColour* BackgroundColour() const;
    void setBackgroundColour(::Ifc2x3::IfcColour* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextStyleForDefinedFont (IfcEntityInstanceData* e);
    IfcTextStyleForDefinedFont (::Ifc2x3::IfcColour* v1_Colour, ::Ifc2x3::IfcColour* v2_BackgroundColour);
    typedef IfcTemplatedEntityList< IfcTextStyleForDefinedFont > list;
};
class IFC_PARSE_API IfcTextStyleTextModel : public IfcUtil::IfcBaseEntity {
public:
    bool hasTextIndent() const;
    ::Ifc2x3::IfcSizeSelect* TextIndent() const;
    void setTextIndent(::Ifc2x3::IfcSizeSelect* v);
    bool hasTextAlign() const;
    std::string TextAlign() const;
    void setTextAlign(std::string v);
    bool hasTextDecoration() const;
    std::string TextDecoration() const;
    void setTextDecoration(std::string v);
    bool hasLetterSpacing() const;
    ::Ifc2x3::IfcSizeSelect* LetterSpacing() const;
    void setLetterSpacing(::Ifc2x3::IfcSizeSelect* v);
    bool hasWordSpacing() const;
    ::Ifc2x3::IfcSizeSelect* WordSpacing() const;
    void setWordSpacing(::Ifc2x3::IfcSizeSelect* v);
    bool hasTextTransform() const;
    std::string TextTransform() const;
    void setTextTransform(std::string v);
    bool hasLineHeight() const;
    ::Ifc2x3::IfcSizeSelect* LineHeight() const;
    void setLineHeight(::Ifc2x3::IfcSizeSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextStyleTextModel (IfcEntityInstanceData* e);
    IfcTextStyleTextModel (::Ifc2x3::IfcSizeSelect* v1_TextIndent, boost::optional< std::string > v2_TextAlign, boost::optional< std::string > v3_TextDecoration, ::Ifc2x3::IfcSizeSelect* v4_LetterSpacing, ::Ifc2x3::IfcSizeSelect* v5_WordSpacing, boost::optional< std::string > v6_TextTransform, ::Ifc2x3::IfcSizeSelect* v7_LineHeight);
    typedef IfcTemplatedEntityList< IfcTextStyleTextModel > list;
};
class IFC_PARSE_API IfcTextStyleWithBoxCharacteristics : public IfcUtil::IfcBaseEntity {
public:
    bool hasBoxHeight() const;
    double BoxHeight() const;
    void setBoxHeight(double v);
    bool hasBoxWidth() const;
    double BoxWidth() const;
    void setBoxWidth(double v);
    bool hasBoxSlantAngle() const;
    double BoxSlantAngle() const;
    void setBoxSlantAngle(double v);
    bool hasBoxRotateAngle() const;
    double BoxRotateAngle() const;
    void setBoxRotateAngle(double v);
    bool hasCharacterSpacing() const;
    ::Ifc2x3::IfcSizeSelect* CharacterSpacing() const;
    void setCharacterSpacing(::Ifc2x3::IfcSizeSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextStyleWithBoxCharacteristics (IfcEntityInstanceData* e);
    IfcTextStyleWithBoxCharacteristics (boost::optional< double > v1_BoxHeight, boost::optional< double > v2_BoxWidth, boost::optional< double > v3_BoxSlantAngle, boost::optional< double > v4_BoxRotateAngle, ::Ifc2x3::IfcSizeSelect* v5_CharacterSpacing);
    typedef IfcTemplatedEntityList< IfcTextStyleWithBoxCharacteristics > list;
};
class IFC_PARSE_API IfcTextureCoordinate : public IfcUtil::IfcBaseEntity {
public:
        IfcTemplatedEntityList< IfcAnnotationSurface >::ptr AnnotatedSurface() const; // INVERSE IfcAnnotationSurface::TextureCoordinates
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextureCoordinate (IfcEntityInstanceData* e);
    IfcTextureCoordinate ();
    typedef IfcTemplatedEntityList< IfcTextureCoordinate > list;
};
class IFC_PARSE_API IfcTextureCoordinateGenerator : public IfcTextureCoordinate {
public:
    std::string Mode() const;
    void setMode(std::string v);
    IfcEntityList::ptr Parameter() const;
    void setParameter(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextureCoordinateGenerator (IfcEntityInstanceData* e);
    IfcTextureCoordinateGenerator (std::string v1_Mode, IfcEntityList::ptr v2_Parameter);
    typedef IfcTemplatedEntityList< IfcTextureCoordinateGenerator > list;
};
class IFC_PARSE_API IfcTextureMap : public IfcTextureCoordinate {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcVertexBasedTextureMap >::ptr TextureMaps() const;
    void setTextureMaps(IfcTemplatedEntityList< ::Ifc2x3::IfcVertexBasedTextureMap >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextureMap (IfcEntityInstanceData* e);
    IfcTextureMap (IfcTemplatedEntityList< ::Ifc2x3::IfcVertexBasedTextureMap >::ptr v1_TextureMaps);
    typedef IfcTemplatedEntityList< IfcTextureMap > list;
};
class IFC_PARSE_API IfcTextureVertex : public IfcUtil::IfcBaseEntity {
public:
    std::vector< double > /*[2:2]*/ Coordinates() const;
    void setCoordinates(std::vector< double > /*[2:2]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextureVertex (IfcEntityInstanceData* e);
    IfcTextureVertex (std::vector< double > /*[2:2]*/ v1_Coordinates);
    typedef IfcTemplatedEntityList< IfcTextureVertex > list;
};

class IFC_PARSE_API IfcThermalMaterialProperties : public IfcMaterialProperties {
public:
    bool hasSpecificHeatCapacity() const;
    double SpecificHeatCapacity() const;
    void setSpecificHeatCapacity(double v);
    bool hasBoilingPoint() const;
    double BoilingPoint() const;
    void setBoilingPoint(double v);
    bool hasFreezingPoint() const;
    double FreezingPoint() const;
    void setFreezingPoint(double v);
    bool hasThermalConductivity() const;
    double ThermalConductivity() const;
    void setThermalConductivity(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcThermalMaterialProperties (IfcEntityInstanceData* e);
    IfcThermalMaterialProperties (::Ifc2x3::IfcMaterial* v1_Material, boost::optional< double > v2_SpecificHeatCapacity, boost::optional< double > v3_BoilingPoint, boost::optional< double > v4_FreezingPoint, boost::optional< double > v5_ThermalConductivity);
    typedef IfcTemplatedEntityList< IfcThermalMaterialProperties > list;
};
class IFC_PARSE_API IfcTimeSeries : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    ::Ifc2x3::IfcDateTimeSelect* StartTime() const;
    void setStartTime(::Ifc2x3::IfcDateTimeSelect* v);
    ::Ifc2x3::IfcDateTimeSelect* EndTime() const;
    void setEndTime(::Ifc2x3::IfcDateTimeSelect* v);
    ::Ifc2x3::IfcTimeSeriesDataTypeEnum::Value TimeSeriesDataType() const;
    void setTimeSeriesDataType(::Ifc2x3::IfcTimeSeriesDataTypeEnum::Value v);
    ::Ifc2x3::IfcDataOriginEnum::Value DataOrigin() const;
    void setDataOrigin(::Ifc2x3::IfcDataOriginEnum::Value v);
    bool hasUserDefinedDataOrigin() const;
    std::string UserDefinedDataOrigin() const;
    void setUserDefinedDataOrigin(std::string v);
    bool hasUnit() const;
    ::Ifc2x3::IfcUnit* Unit() const;
    void setUnit(::Ifc2x3::IfcUnit* v);
        IfcTemplatedEntityList< IfcTimeSeriesReferenceRelationship >::ptr DocumentedBy() const; // INVERSE IfcTimeSeriesReferenceRelationship::ReferencedTimeSeries
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTimeSeries (IfcEntityInstanceData* e);
    IfcTimeSeries (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcDateTimeSelect* v3_StartTime, ::Ifc2x3::IfcDateTimeSelect* v4_EndTime, ::Ifc2x3::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc2x3::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc2x3::IfcUnit* v8_Unit);
    typedef IfcTemplatedEntityList< IfcTimeSeries > list;
};

class IFC_PARSE_API IfcTimeSeriesReferenceRelationship : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc2x3::IfcTimeSeries* ReferencedTimeSeries() const;
    void setReferencedTimeSeries(::Ifc2x3::IfcTimeSeries* v);
    IfcEntityList::ptr TimeSeriesReferences() const;
    void setTimeSeriesReferences(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTimeSeriesReferenceRelationship (IfcEntityInstanceData* e);
    IfcTimeSeriesReferenceRelationship (::Ifc2x3::IfcTimeSeries* v1_ReferencedTimeSeries, IfcEntityList::ptr v2_TimeSeriesReferences);
    typedef IfcTemplatedEntityList< IfcTimeSeriesReferenceRelationship > list;
};
class IFC_PARSE_API IfcTimeSeriesValue : public IfcUtil::IfcBaseEntity {
public:
    IfcEntityList::ptr ListValues() const;
    void setListValues(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTimeSeriesValue (IfcEntityInstanceData* e);
    IfcTimeSeriesValue (IfcEntityList::ptr v1_ListValues);
    typedef IfcTemplatedEntityList< IfcTimeSeriesValue > list;
};
class IFC_PARSE_API IfcTopologicalRepresentationItem : public IfcRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTopologicalRepresentationItem (IfcEntityInstanceData* e);
    IfcTopologicalRepresentationItem ();
    typedef IfcTemplatedEntityList< IfcTopologicalRepresentationItem > list;
};
class IFC_PARSE_API IfcTopologyRepresentation : public IfcShapeModel {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTopologyRepresentation (IfcEntityInstanceData* e);
    IfcTopologyRepresentation (::Ifc2x3::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcTopologyRepresentation > list;
};
class IFC_PARSE_API IfcUnitAssignment : public IfcUtil::IfcBaseEntity {
public:
    IfcEntityList::ptr Units() const;
    void setUnits(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcUnitAssignment (IfcEntityInstanceData* e);
    IfcUnitAssignment (IfcEntityList::ptr v1_Units);
    typedef IfcTemplatedEntityList< IfcUnitAssignment > list;
};
class IFC_PARSE_API IfcVertex : public IfcTopologicalRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVertex (IfcEntityInstanceData* e);
    IfcVertex ();
    typedef IfcTemplatedEntityList< IfcVertex > list;
};

class IFC_PARSE_API IfcVertexBasedTextureMap : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcTextureVertex >::ptr TextureVertices() const;
    void setTextureVertices(IfcTemplatedEntityList< ::Ifc2x3::IfcTextureVertex >::ptr v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr TexturePoints() const;
    void setTexturePoints(IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVertexBasedTextureMap (IfcEntityInstanceData* e);
    IfcVertexBasedTextureMap (IfcTemplatedEntityList< ::Ifc2x3::IfcTextureVertex >::ptr v1_TextureVertices, IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr v2_TexturePoints);
    typedef IfcTemplatedEntityList< IfcVertexBasedTextureMap > list;
};
class IFC_PARSE_API IfcVertexPoint : public IfcVertex {
public:
    ::Ifc2x3::IfcPoint* VertexGeometry() const;
    void setVertexGeometry(::Ifc2x3::IfcPoint* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVertexPoint (IfcEntityInstanceData* e);
    IfcVertexPoint (::Ifc2x3::IfcPoint* v1_VertexGeometry);
    typedef IfcTemplatedEntityList< IfcVertexPoint > list;
};
class IFC_PARSE_API IfcVirtualGridIntersection : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr IntersectingAxes() const;
    void setIntersectingAxes(IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr v);
    std::vector< double > /*[2:3]*/ OffsetDistances() const;
    void setOffsetDistances(std::vector< double > /*[2:3]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVirtualGridIntersection (IfcEntityInstanceData* e);
    IfcVirtualGridIntersection (IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr v1_IntersectingAxes, std::vector< double > /*[2:3]*/ v2_OffsetDistances);
    typedef IfcTemplatedEntityList< IfcVirtualGridIntersection > list;
};

class IFC_PARSE_API IfcWaterProperties : public IfcMaterialProperties {
public:
    bool hasIsPotable() const;
    bool IsPotable() const;
    void setIsPotable(bool v);
    bool hasHardness() const;
    double Hardness() const;
    void setHardness(double v);
    bool hasAlkalinityConcentration() const;
    double AlkalinityConcentration() const;
    void setAlkalinityConcentration(double v);
    bool hasAcidityConcentration() const;
    double AcidityConcentration() const;
    void setAcidityConcentration(double v);
    bool hasImpuritiesContent() const;
    double ImpuritiesContent() const;
    void setImpuritiesContent(double v);
    bool hasPHLevel() const;
    double PHLevel() const;
    void setPHLevel(double v);
    bool hasDissolvedSolidsContent() const;
    double DissolvedSolidsContent() const;
    void setDissolvedSolidsContent(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWaterProperties (IfcEntityInstanceData* e);
    IfcWaterProperties (::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcWaterProperties > list;
};

class IFC_PARSE_API IfcAnnotationOccurrence : public IfcStyledItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAnnotationOccurrence (IfcEntityInstanceData* e);
    IfcAnnotationOccurrence (::Ifc2x3::IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcAnnotationOccurrence > list;
};

class IFC_PARSE_API IfcAnnotationSurfaceOccurrence : public IfcAnnotationOccurrence {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAnnotationSurfaceOccurrence (IfcEntityInstanceData* e);
    IfcAnnotationSurfaceOccurrence (::Ifc2x3::IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcAnnotationSurfaceOccurrence > list;
};

class IFC_PARSE_API IfcAnnotationSymbolOccurrence : public IfcAnnotationOccurrence {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAnnotationSymbolOccurrence (IfcEntityInstanceData* e);
    IfcAnnotationSymbolOccurrence (::Ifc2x3::IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcAnnotationSymbolOccurrence > list;
};

class IFC_PARSE_API IfcAnnotationTextOccurrence : public IfcAnnotationOccurrence {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAnnotationTextOccurrence (IfcEntityInstanceData* e);
    IfcAnnotationTextOccurrence (::Ifc2x3::IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcAnnotationTextOccurrence > list;
};
class IFC_PARSE_API IfcArbitraryClosedProfileDef : public IfcProfileDef {
public:
    ::Ifc2x3::IfcCurve* OuterCurve() const;
    void setOuterCurve(::Ifc2x3::IfcCurve* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcArbitraryClosedProfileDef (IfcEntityInstanceData* e);
    IfcArbitraryClosedProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcCurve* v3_OuterCurve);
    typedef IfcTemplatedEntityList< IfcArbitraryClosedProfileDef > list;
};
class IFC_PARSE_API IfcArbitraryOpenProfileDef : public IfcProfileDef {
public:
    ::Ifc2x3::IfcBoundedCurve* Curve() const;
    void setCurve(::Ifc2x3::IfcBoundedCurve* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcArbitraryOpenProfileDef (IfcEntityInstanceData* e);
    IfcArbitraryOpenProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcBoundedCurve* v3_Curve);
    typedef IfcTemplatedEntityList< IfcArbitraryOpenProfileDef > list;
};
class IFC_PARSE_API IfcArbitraryProfileDefWithVoids : public IfcArbitraryClosedProfileDef {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcCurve >::ptr InnerCurves() const;
    void setInnerCurves(IfcTemplatedEntityList< ::Ifc2x3::IfcCurve >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcArbitraryProfileDefWithVoids (IfcEntityInstanceData* e);
    IfcArbitraryProfileDefWithVoids (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcCurve* v3_OuterCurve, IfcTemplatedEntityList< ::Ifc2x3::IfcCurve >::ptr v4_InnerCurves);
    typedef IfcTemplatedEntityList< IfcArbitraryProfileDefWithVoids > list;
};
class IFC_PARSE_API IfcBlobTexture : public IfcSurfaceTexture {
public:
    std::string RasterFormat() const;
    void setRasterFormat(std::string v);
    bool RasterCode() const;
    void setRasterCode(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBlobTexture (IfcEntityInstanceData* e);
    IfcBlobTexture (bool v1_RepeatS, bool v2_RepeatT, ::Ifc2x3::IfcSurfaceTextureEnum::Value v3_TextureType, ::Ifc2x3::IfcCartesianTransformationOperator2D* v4_TextureTransform, std::string v5_RasterFormat, bool v6_RasterCode);
    typedef IfcTemplatedEntityList< IfcBlobTexture > list;
};
class IFC_PARSE_API IfcCenterLineProfileDef : public IfcArbitraryOpenProfileDef {
public:
    double Thickness() const;
    void setThickness(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCenterLineProfileDef (IfcEntityInstanceData* e);
    IfcCenterLineProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcBoundedCurve* v3_Curve, double v4_Thickness);
    typedef IfcTemplatedEntityList< IfcCenterLineProfileDef > list;
};
class IFC_PARSE_API IfcClassificationReference : public IfcExternalReference {
public:
    bool hasReferencedSource() const;
    ::Ifc2x3::IfcClassification* ReferencedSource() const;
    void setReferencedSource(::Ifc2x3::IfcClassification* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcClassificationReference (IfcEntityInstanceData* e);
    IfcClassificationReference (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_ItemReference, boost::optional< std::string > v3_Name, ::Ifc2x3::IfcClassification* v4_ReferencedSource);
    typedef IfcTemplatedEntityList< IfcClassificationReference > list;
};
class IFC_PARSE_API IfcColourRgb : public IfcColourSpecification {
public:
    double Red() const;
    void setRed(double v);
    double Green() const;
    void setGreen(double v);
    double Blue() const;
    void setBlue(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcColourRgb (IfcEntityInstanceData* e);
    IfcColourRgb (boost::optional< std::string > v1_Name, double v2_Red, double v3_Green, double v4_Blue);
    typedef IfcTemplatedEntityList< IfcColourRgb > list;
};
class IFC_PARSE_API IfcComplexProperty : public IfcProperty {
public:
    std::string UsageName() const;
    void setUsageName(std::string v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr HasProperties() const;
    void setHasProperties(IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcComplexProperty (IfcEntityInstanceData* e);
    IfcComplexProperty (std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_UsageName, IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v4_HasProperties);
    typedef IfcTemplatedEntityList< IfcComplexProperty > list;
};
class IFC_PARSE_API IfcCompositeProfileDef : public IfcProfileDef {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcProfileDef >::ptr Profiles() const;
    void setProfiles(IfcTemplatedEntityList< ::Ifc2x3::IfcProfileDef >::ptr v);
    bool hasLabel() const;
    std::string Label() const;
    void setLabel(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCompositeProfileDef (IfcEntityInstanceData* e);
    IfcCompositeProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcTemplatedEntityList< ::Ifc2x3::IfcProfileDef >::ptr v3_Profiles, boost::optional< std::string > v4_Label);
    typedef IfcTemplatedEntityList< IfcCompositeProfileDef > list;
};
class IFC_PARSE_API IfcConnectedFaceSet : public IfcTopologicalRepresentationItem {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcFace >::ptr CfsFaces() const;
    void setCfsFaces(IfcTemplatedEntityList< ::Ifc2x3::IfcFace >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectedFaceSet (IfcEntityInstanceData* e);
    IfcConnectedFaceSet (IfcTemplatedEntityList< ::Ifc2x3::IfcFace >::ptr v1_CfsFaces);
    typedef IfcTemplatedEntityList< IfcConnectedFaceSet > list;
};
class IFC_PARSE_API IfcConnectionCurveGeometry : public IfcConnectionGeometry {
public:
    ::Ifc2x3::IfcCurveOrEdgeCurve* CurveOnRelatingElement() const;
    void setCurveOnRelatingElement(::Ifc2x3::IfcCurveOrEdgeCurve* v);
    bool hasCurveOnRelatedElement() const;
    ::Ifc2x3::IfcCurveOrEdgeCurve* CurveOnRelatedElement() const;
    void setCurveOnRelatedElement(::Ifc2x3::IfcCurveOrEdgeCurve* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionCurveGeometry (IfcEntityInstanceData* e);
    IfcConnectionCurveGeometry (::Ifc2x3::IfcCurveOrEdgeCurve* v1_CurveOnRelatingElement, ::Ifc2x3::IfcCurveOrEdgeCurve* v2_CurveOnRelatedElement);
    typedef IfcTemplatedEntityList< IfcConnectionCurveGeometry > list;
};
class IFC_PARSE_API IfcConnectionPointEccentricity : public IfcConnectionPointGeometry {
public:
    bool hasEccentricityInX() const;
    double EccentricityInX() const;
    void setEccentricityInX(double v);
    bool hasEccentricityInY() const;
    double EccentricityInY() const;
    void setEccentricityInY(double v);
    bool hasEccentricityInZ() const;
    double EccentricityInZ() const;
    void setEccentricityInZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionPointEccentricity (IfcEntityInstanceData* e);
    IfcConnectionPointEccentricity (::Ifc2x3::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc2x3::IfcPointOrVertexPoint* v2_PointOnRelatedElement, boost::optional< double > v3_EccentricityInX, boost::optional< double > v4_EccentricityInY, boost::optional< double > v5_EccentricityInZ);
    typedef IfcTemplatedEntityList< IfcConnectionPointEccentricity > list;
};
class IFC_PARSE_API IfcContextDependentUnit : public IfcNamedUnit {
public:
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcContextDependentUnit (IfcEntityInstanceData* e);
    IfcContextDependentUnit (::Ifc2x3::IfcDimensionalExponents* v1_Dimensions, ::Ifc2x3::IfcUnitEnum::Value v2_UnitType, std::string v3_Name);
    typedef IfcTemplatedEntityList< IfcContextDependentUnit > list;
};
class IFC_PARSE_API IfcConversionBasedUnit : public IfcNamedUnit {
public:
    std::string Name() const;
    void setName(std::string v);
    ::Ifc2x3::IfcMeasureWithUnit* ConversionFactor() const;
    void setConversionFactor(::Ifc2x3::IfcMeasureWithUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConversionBasedUnit (IfcEntityInstanceData* e);
    IfcConversionBasedUnit (::Ifc2x3::IfcDimensionalExponents* v1_Dimensions, ::Ifc2x3::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc2x3::IfcMeasureWithUnit* v4_ConversionFactor);
    typedef IfcTemplatedEntityList< IfcConversionBasedUnit > list;
};
class IFC_PARSE_API IfcCurveStyle : public IfcPresentationStyle {
public:
    bool hasCurveFont() const;
    ::Ifc2x3::IfcCurveFontOrScaledCurveFontSelect* CurveFont() const;
    void setCurveFont(::Ifc2x3::IfcCurveFontOrScaledCurveFontSelect* v);
    bool hasCurveWidth() const;
    ::Ifc2x3::IfcSizeSelect* CurveWidth() const;
    void setCurveWidth(::Ifc2x3::IfcSizeSelect* v);
    bool hasCurveColour() const;
    ::Ifc2x3::IfcColour* CurveColour() const;
    void setCurveColour(::Ifc2x3::IfcColour* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurveStyle (IfcEntityInstanceData* e);
    IfcCurveStyle (boost::optional< std::string > v1_Name, ::Ifc2x3::IfcCurveFontOrScaledCurveFontSelect* v2_CurveFont, ::Ifc2x3::IfcSizeSelect* v3_CurveWidth, ::Ifc2x3::IfcColour* v4_CurveColour);
    typedef IfcTemplatedEntityList< IfcCurveStyle > list;
};
class IFC_PARSE_API IfcDerivedProfileDef : public IfcProfileDef {
public:
    ::Ifc2x3::IfcProfileDef* ParentProfile() const;
    void setParentProfile(::Ifc2x3::IfcProfileDef* v);
    ::Ifc2x3::IfcCartesianTransformationOperator2D* Operator() const;
    void setOperator(::Ifc2x3::IfcCartesianTransformationOperator2D* v);
    bool hasLabel() const;
    std::string Label() const;
    void setLabel(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDerivedProfileDef (IfcEntityInstanceData* e);
    IfcDerivedProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcProfileDef* v3_ParentProfile, ::Ifc2x3::IfcCartesianTransformationOperator2D* v4_Operator, boost::optional< std::string > v5_Label);
    typedef IfcTemplatedEntityList< IfcDerivedProfileDef > list;
};

class IFC_PARSE_API IfcDimensionCalloutRelationship : public IfcDraughtingCalloutRelationship {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDimensionCalloutRelationship (IfcEntityInstanceData* e);
    IfcDimensionCalloutRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcDraughtingCallout* v3_RelatingDraughtingCallout, ::Ifc2x3::IfcDraughtingCallout* v4_RelatedDraughtingCallout);
    typedef IfcTemplatedEntityList< IfcDimensionCalloutRelationship > list;
};

class IFC_PARSE_API IfcDimensionPair : public IfcDraughtingCalloutRelationship {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDimensionPair (IfcEntityInstanceData* e);
    IfcDimensionPair (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcDraughtingCallout* v3_RelatingDraughtingCallout, ::Ifc2x3::IfcDraughtingCallout* v4_RelatedDraughtingCallout);
    typedef IfcTemplatedEntityList< IfcDimensionPair > list;
};
class IFC_PARSE_API IfcDocumentReference : public IfcExternalReference {
public:
        IfcTemplatedEntityList< IfcDocumentInformation >::ptr ReferenceToDocument() const; // INVERSE IfcDocumentInformation::DocumentReferences
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDocumentReference (IfcEntityInstanceData* e);
    IfcDocumentReference (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_ItemReference, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcDocumentReference > list;
};
class IFC_PARSE_API IfcDraughtingPreDefinedTextFont : public IfcPreDefinedTextFont {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDraughtingPreDefinedTextFont (IfcEntityInstanceData* e);
    IfcDraughtingPreDefinedTextFont (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcDraughtingPreDefinedTextFont > list;
};
class IFC_PARSE_API IfcEdge : public IfcTopologicalRepresentationItem {
public:
    ::Ifc2x3::IfcVertex* EdgeStart() const;
    void setEdgeStart(::Ifc2x3::IfcVertex* v);
    ::Ifc2x3::IfcVertex* EdgeEnd() const;
    void setEdgeEnd(::Ifc2x3::IfcVertex* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEdge (IfcEntityInstanceData* e);
    IfcEdge (::Ifc2x3::IfcVertex* v1_EdgeStart, ::Ifc2x3::IfcVertex* v2_EdgeEnd);
    typedef IfcTemplatedEntityList< IfcEdge > list;
};
class IFC_PARSE_API IfcEdgeCurve : public IfcEdge {
public:
    ::Ifc2x3::IfcCurve* EdgeGeometry() const;
    void setEdgeGeometry(::Ifc2x3::IfcCurve* v);
    bool SameSense() const;
    void setSameSense(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEdgeCurve (IfcEntityInstanceData* e);
    IfcEdgeCurve (::Ifc2x3::IfcVertex* v1_EdgeStart, ::Ifc2x3::IfcVertex* v2_EdgeEnd, ::Ifc2x3::IfcCurve* v3_EdgeGeometry, bool v4_SameSense);
    typedef IfcTemplatedEntityList< IfcEdgeCurve > list;
};
class IFC_PARSE_API IfcExtendedMaterialProperties : public IfcMaterialProperties {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr ExtendedProperties() const;
    void setExtendedProperties(IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExtendedMaterialProperties (IfcEntityInstanceData* e);
    IfcExtendedMaterialProperties (::Ifc2x3::IfcMaterial* v1_Material, IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v2_ExtendedProperties, boost::optional< std::string > v3_Description, std::string v4_Name);
    typedef IfcTemplatedEntityList< IfcExtendedMaterialProperties > list;
};
class IFC_PARSE_API IfcFace : public IfcTopologicalRepresentationItem {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcFaceBound >::ptr Bounds() const;
    void setBounds(IfcTemplatedEntityList< ::Ifc2x3::IfcFaceBound >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFace (IfcEntityInstanceData* e);
    IfcFace (IfcTemplatedEntityList< ::Ifc2x3::IfcFaceBound >::ptr v1_Bounds);
    typedef IfcTemplatedEntityList< IfcFace > list;
};
class IFC_PARSE_API IfcFaceBound : public IfcTopologicalRepresentationItem {
public:
    ::Ifc2x3::IfcLoop* Bound() const;
    void setBound(::Ifc2x3::IfcLoop* v);
    bool Orientation() const;
    void setOrientation(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFaceBound (IfcEntityInstanceData* e);
    IfcFaceBound (::Ifc2x3::IfcLoop* v1_Bound, bool v2_Orientation);
    typedef IfcTemplatedEntityList< IfcFaceBound > list;
};
class IFC_PARSE_API IfcFaceOuterBound : public IfcFaceBound {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFaceOuterBound (IfcEntityInstanceData* e);
    IfcFaceOuterBound (::Ifc2x3::IfcLoop* v1_Bound, bool v2_Orientation);
    typedef IfcTemplatedEntityList< IfcFaceOuterBound > list;
};
class IFC_PARSE_API IfcFaceSurface : public IfcFace {
public:
    ::Ifc2x3::IfcSurface* FaceSurface() const;
    void setFaceSurface(::Ifc2x3::IfcSurface* v);
    bool SameSense() const;
    void setSameSense(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFaceSurface (IfcEntityInstanceData* e);
    IfcFaceSurface (IfcTemplatedEntityList< ::Ifc2x3::IfcFaceBound >::ptr v1_Bounds, ::Ifc2x3::IfcSurface* v2_FaceSurface, bool v3_SameSense);
    typedef IfcTemplatedEntityList< IfcFaceSurface > list;
};
class IFC_PARSE_API IfcFailureConnectionCondition : public IfcStructuralConnectionCondition {
public:
    bool hasTensionFailureX() const;
    double TensionFailureX() const;
    void setTensionFailureX(double v);
    bool hasTensionFailureY() const;
    double TensionFailureY() const;
    void setTensionFailureY(double v);
    bool hasTensionFailureZ() const;
    double TensionFailureZ() const;
    void setTensionFailureZ(double v);
    bool hasCompressionFailureX() const;
    double CompressionFailureX() const;
    void setCompressionFailureX(double v);
    bool hasCompressionFailureY() const;
    double CompressionFailureY() const;
    void setCompressionFailureY(double v);
    bool hasCompressionFailureZ() const;
    double CompressionFailureZ() const;
    void setCompressionFailureZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFailureConnectionCondition (IfcEntityInstanceData* e);
    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);
    typedef IfcTemplatedEntityList< IfcFailureConnectionCondition > list;
};
class IFC_PARSE_API IfcFillAreaStyle : public IfcPresentationStyle {
public:
    IfcEntityList::ptr FillStyles() const;
    void setFillStyles(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFillAreaStyle (IfcEntityInstanceData* e);
    IfcFillAreaStyle (boost::optional< std::string > v1_Name, IfcEntityList::ptr v2_FillStyles);
    typedef IfcTemplatedEntityList< IfcFillAreaStyle > list;
};

class IFC_PARSE_API IfcFuelProperties : public IfcMaterialProperties {
public:
    bool hasCombustionTemperature() const;
    double CombustionTemperature() const;
    void setCombustionTemperature(double v);
    bool hasCarbonContent() const;
    double CarbonContent() const;
    void setCarbonContent(double v);
    bool hasLowerHeatingValue() const;
    double LowerHeatingValue() const;
    void setLowerHeatingValue(double v);
    bool hasHigherHeatingValue() const;
    double HigherHeatingValue() const;
    void setHigherHeatingValue(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFuelProperties (IfcEntityInstanceData* e);
    IfcFuelProperties (::Ifc2x3::IfcMaterial* v1_Material, boost::optional< double > v2_CombustionTemperature, boost::optional< double > v3_CarbonContent, boost::optional< double > v4_LowerHeatingValue, boost::optional< double > v5_HigherHeatingValue);
    typedef IfcTemplatedEntityList< IfcFuelProperties > list;
};

class IFC_PARSE_API IfcGeneralMaterialProperties : public IfcMaterialProperties {
public:
    bool hasMolecularWeight() const;
    double MolecularWeight() const;
    void setMolecularWeight(double v);
    bool hasPorosity() const;
    double Porosity() const;
    void setPorosity(double v);
    bool hasMassDensity() const;
    double MassDensity() const;
    void setMassDensity(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeneralMaterialProperties (IfcEntityInstanceData* e);
    IfcGeneralMaterialProperties (::Ifc2x3::IfcMaterial* v1_Material, boost::optional< double > v2_MolecularWeight, boost::optional< double > v3_Porosity, boost::optional< double > v4_MassDensity);
    typedef IfcTemplatedEntityList< IfcGeneralMaterialProperties > list;
};

class IFC_PARSE_API IfcGeneralProfileProperties : public IfcProfileProperties {
public:
    bool hasPhysicalWeight() const;
    double PhysicalWeight() const;
    void setPhysicalWeight(double v);
    bool hasPerimeter() const;
    double Perimeter() const;
    void setPerimeter(double v);
    bool hasMinimumPlateThickness() const;
    double MinimumPlateThickness() const;
    void setMinimumPlateThickness(double v);
    bool hasMaximumPlateThickness() const;
    double MaximumPlateThickness() const;
    void setMaximumPlateThickness(double v);
    bool hasCrossSectionArea() const;
    double CrossSectionArea() const;
    void setCrossSectionArea(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeneralProfileProperties (IfcEntityInstanceData* e);
    IfcGeneralProfileProperties (boost::optional< std::string > v1_ProfileName, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcGeneralProfileProperties > list;
};
class IFC_PARSE_API IfcGeometricRepresentationContext : public IfcRepresentationContext {
public:
    int CoordinateSpaceDimension() const;
    void setCoordinateSpaceDimension(int v);
    bool hasPrecision() const;
    double Precision() const;
    void setPrecision(double v);
    ::Ifc2x3::IfcAxis2Placement* WorldCoordinateSystem() const;
    void setWorldCoordinateSystem(::Ifc2x3::IfcAxis2Placement* v);
    bool hasTrueNorth() const;
    ::Ifc2x3::IfcDirection* TrueNorth() const;
    void setTrueNorth(::Ifc2x3::IfcDirection* v);
        IfcTemplatedEntityList< IfcGeometricRepresentationSubContext >::ptr HasSubContexts() const; // INVERSE IfcGeometricRepresentationSubContext::ParentContext
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeometricRepresentationContext (IfcEntityInstanceData* e);
    IfcGeometricRepresentationContext (boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, int v3_CoordinateSpaceDimension, boost::optional< double > v4_Precision, ::Ifc2x3::IfcAxis2Placement* v5_WorldCoordinateSystem, ::Ifc2x3::IfcDirection* v6_TrueNorth);
    typedef IfcTemplatedEntityList< IfcGeometricRepresentationContext > list;
};
class IFC_PARSE_API IfcGeometricRepresentationItem : public IfcRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeometricRepresentationItem (IfcEntityInstanceData* e);
    IfcGeometricRepresentationItem ();
    typedef IfcTemplatedEntityList< IfcGeometricRepresentationItem > list;
};
class IFC_PARSE_API IfcGeometricRepresentationSubContext : public IfcGeometricRepresentationContext {
public:
    ::Ifc2x3::IfcGeometricRepresentationContext* ParentContext() const;
    void setParentContext(::Ifc2x3::IfcGeometricRepresentationContext* v);
    bool hasTargetScale() const;
    double TargetScale() const;
    void setTargetScale(double v);
    ::Ifc2x3::IfcGeometricProjectionEnum::Value TargetView() const;
    void setTargetView(::Ifc2x3::IfcGeometricProjectionEnum::Value v);
    bool hasUserDefinedTargetView() const;
    std::string UserDefinedTargetView() const;
    void setUserDefinedTargetView(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeometricRepresentationSubContext (IfcEntityInstanceData* e);
    IfcGeometricRepresentationSubContext (boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, ::Ifc2x3::IfcGeometricRepresentationContext* v7_ParentContext, boost::optional< double > v8_TargetScale, ::Ifc2x3::IfcGeometricProjectionEnum::Value v9_TargetView, boost::optional< std::string > v10_UserDefinedTargetView);
    typedef IfcTemplatedEntityList< IfcGeometricRepresentationSubContext > list;
};
class IFC_PARSE_API IfcGeometricSet : public IfcGeometricRepresentationItem {
public:
    IfcEntityList::ptr Elements() const;
    void setElements(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeometricSet (IfcEntityInstanceData* e);
    IfcGeometricSet (IfcEntityList::ptr v1_Elements);
    typedef IfcTemplatedEntityList< IfcGeometricSet > list;
};
class IFC_PARSE_API IfcGridPlacement : public IfcObjectPlacement {
public:
    ::Ifc2x3::IfcVirtualGridIntersection* PlacementLocation() const;
    void setPlacementLocation(::Ifc2x3::IfcVirtualGridIntersection* v);
    bool hasPlacementRefDirection() const;
    ::Ifc2x3::IfcVirtualGridIntersection* PlacementRefDirection() const;
    void setPlacementRefDirection(::Ifc2x3::IfcVirtualGridIntersection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGridPlacement (IfcEntityInstanceData* e);
    IfcGridPlacement (::Ifc2x3::IfcVirtualGridIntersection* v1_PlacementLocation, ::Ifc2x3::IfcVirtualGridIntersection* v2_PlacementRefDirection);
    typedef IfcTemplatedEntityList< IfcGridPlacement > list;
};
class IFC_PARSE_API IfcHalfSpaceSolid : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcSurface* BaseSurface() const;
    void setBaseSurface(::Ifc2x3::IfcSurface* v);
    bool AgreementFlag() const;
    void setAgreementFlag(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcHalfSpaceSolid (IfcEntityInstanceData* e);
    IfcHalfSpaceSolid (::Ifc2x3::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag);
    typedef IfcTemplatedEntityList< IfcHalfSpaceSolid > list;
};

class IFC_PARSE_API IfcHygroscopicMaterialProperties : public IfcMaterialProperties {
public:
    bool hasUpperVaporResistanceFactor() const;
    double UpperVaporResistanceFactor() const;
    void setUpperVaporResistanceFactor(double v);
    bool hasLowerVaporResistanceFactor() const;
    double LowerVaporResistanceFactor() const;
    void setLowerVaporResistanceFactor(double v);
    bool hasIsothermalMoistureCapacity() const;
    double IsothermalMoistureCapacity() const;
    void setIsothermalMoistureCapacity(double v);
    bool hasVaporPermeability() const;
    double VaporPermeability() const;
    void setVaporPermeability(double v);
    bool hasMoistureDiffusivity() const;
    double MoistureDiffusivity() const;
    void setMoistureDiffusivity(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcHygroscopicMaterialProperties (IfcEntityInstanceData* e);
    IfcHygroscopicMaterialProperties (::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcHygroscopicMaterialProperties > list;
};
class IFC_PARSE_API IfcImageTexture : public IfcSurfaceTexture {
public:
    std::string UrlReference() const;
    void setUrlReference(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcImageTexture (IfcEntityInstanceData* e);
    IfcImageTexture (bool v1_RepeatS, bool v2_RepeatT, ::Ifc2x3::IfcSurfaceTextureEnum::Value v3_TextureType, ::Ifc2x3::IfcCartesianTransformationOperator2D* v4_TextureTransform, std::string v5_UrlReference);
    typedef IfcTemplatedEntityList< IfcImageTexture > list;
};
class IFC_PARSE_API IfcIrregularTimeSeries : public IfcTimeSeries {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcIrregularTimeSeriesValue >::ptr Values() const;
    void setValues(IfcTemplatedEntityList< ::Ifc2x3::IfcIrregularTimeSeriesValue >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIrregularTimeSeries (IfcEntityInstanceData* e);
    IfcIrregularTimeSeries (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcDateTimeSelect* v3_StartTime, ::Ifc2x3::IfcDateTimeSelect* v4_EndTime, ::Ifc2x3::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc2x3::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc2x3::IfcUnit* v8_Unit, IfcTemplatedEntityList< ::Ifc2x3::IfcIrregularTimeSeriesValue >::ptr v9_Values);
    typedef IfcTemplatedEntityList< IfcIrregularTimeSeries > list;
};
class IFC_PARSE_API IfcLightSource : public IfcGeometricRepresentationItem {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    ::Ifc2x3::IfcColourRgb* LightColour() const;
    void setLightColour(::Ifc2x3::IfcColourRgb* v);
    bool hasAmbientIntensity() const;
    double AmbientIntensity() const;
    void setAmbientIntensity(double v);
    bool hasIntensity() const;
    double Intensity() const;
    void setIntensity(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSource (IfcEntityInstanceData* e);
    IfcLightSource (boost::optional< std::string > v1_Name, ::Ifc2x3::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity);
    typedef IfcTemplatedEntityList< IfcLightSource > list;
};
class IFC_PARSE_API IfcLightSourceAmbient : public IfcLightSource {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSourceAmbient (IfcEntityInstanceData* e);
    IfcLightSourceAmbient (boost::optional< std::string > v1_Name, ::Ifc2x3::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity);
    typedef IfcTemplatedEntityList< IfcLightSourceAmbient > list;
};
class IFC_PARSE_API IfcLightSourceDirectional : public IfcLightSource {
public:
    ::Ifc2x3::IfcDirection* Orientation() const;
    void setOrientation(::Ifc2x3::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSourceDirectional (IfcEntityInstanceData* e);
    IfcLightSourceDirectional (boost::optional< std::string > v1_Name, ::Ifc2x3::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc2x3::IfcDirection* v5_Orientation);
    typedef IfcTemplatedEntityList< IfcLightSourceDirectional > list;
};
class IFC_PARSE_API IfcLightSourceGoniometric : public IfcLightSource {
public:
    ::Ifc2x3::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc2x3::IfcAxis2Placement3D* v);
    bool hasColourAppearance() const;
    ::Ifc2x3::IfcColourRgb* ColourAppearance() const;
    void setColourAppearance(::Ifc2x3::IfcColourRgb* v);
    double ColourTemperature() const;
    void setColourTemperature(double v);
    double LuminousFlux() const;
    void setLuminousFlux(double v);
    ::Ifc2x3::IfcLightEmissionSourceEnum::Value LightEmissionSource() const;
    void setLightEmissionSource(::Ifc2x3::IfcLightEmissionSourceEnum::Value v);
    ::Ifc2x3::IfcLightDistributionDataSourceSelect* LightDistributionDataSource() const;
    void setLightDistributionDataSource(::Ifc2x3::IfcLightDistributionDataSourceSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSourceGoniometric (IfcEntityInstanceData* e);
    IfcLightSourceGoniometric (boost::optional< std::string > v1_Name, ::Ifc2x3::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc2x3::IfcAxis2Placement3D* v5_Position, ::Ifc2x3::IfcColourRgb* v6_ColourAppearance, double v7_ColourTemperature, double v8_LuminousFlux, ::Ifc2x3::IfcLightEmissionSourceEnum::Value v9_LightEmissionSource, ::Ifc2x3::IfcLightDistributionDataSourceSelect* v10_LightDistributionDataSource);
    typedef IfcTemplatedEntityList< IfcLightSourceGoniometric > list;
};
class IFC_PARSE_API IfcLightSourcePositional : public IfcLightSource {
public:
    ::Ifc2x3::IfcCartesianPoint* Position() const;
    void setPosition(::Ifc2x3::IfcCartesianPoint* v);
    double Radius() const;
    void setRadius(double v);
    double ConstantAttenuation() const;
    void setConstantAttenuation(double v);
    double DistanceAttenuation() const;
    void setDistanceAttenuation(double v);
    double QuadricAttenuation() const;
    void setQuadricAttenuation(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSourcePositional (IfcEntityInstanceData* e);
    IfcLightSourcePositional (boost::optional< std::string > v1_Name, ::Ifc2x3::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc2x3::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation);
    typedef IfcTemplatedEntityList< IfcLightSourcePositional > list;
};
class IFC_PARSE_API IfcLightSourceSpot : public IfcLightSourcePositional {
public:
    ::Ifc2x3::IfcDirection* Orientation() const;
    void setOrientation(::Ifc2x3::IfcDirection* v);
    bool hasConcentrationExponent() const;
    double ConcentrationExponent() const;
    void setConcentrationExponent(double v);
    double SpreadAngle() const;
    void setSpreadAngle(double v);
    double BeamWidthAngle() const;
    void setBeamWidthAngle(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSourceSpot (IfcEntityInstanceData* e);
    IfcLightSourceSpot (boost::optional< std::string > v1_Name, ::Ifc2x3::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc2x3::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation, ::Ifc2x3::IfcDirection* v10_Orientation, boost::optional< double > v11_ConcentrationExponent, double v12_SpreadAngle, double v13_BeamWidthAngle);
    typedef IfcTemplatedEntityList< IfcLightSourceSpot > list;
};
class IFC_PARSE_API IfcLocalPlacement : public IfcObjectPlacement {
public:
    bool hasPlacementRelTo() const;
    ::Ifc2x3::IfcObjectPlacement* PlacementRelTo() const;
    void setPlacementRelTo(::Ifc2x3::IfcObjectPlacement* v);
    ::Ifc2x3::IfcAxis2Placement* RelativePlacement() const;
    void setRelativePlacement(::Ifc2x3::IfcAxis2Placement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLocalPlacement (IfcEntityInstanceData* e);
    IfcLocalPlacement (::Ifc2x3::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc2x3::IfcAxis2Placement* v2_RelativePlacement);
    typedef IfcTemplatedEntityList< IfcLocalPlacement > list;
};
class IFC_PARSE_API IfcLoop : public IfcTopologicalRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLoop (IfcEntityInstanceData* e);
    IfcLoop ();
    typedef IfcTemplatedEntityList< IfcLoop > list;
};
class IFC_PARSE_API IfcMappedItem : public IfcRepresentationItem {
public:
    ::Ifc2x3::IfcRepresentationMap* MappingSource() const;
    void setMappingSource(::Ifc2x3::IfcRepresentationMap* v);
    ::Ifc2x3::IfcCartesianTransformationOperator* MappingTarget() const;
    void setMappingTarget(::Ifc2x3::IfcCartesianTransformationOperator* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMappedItem (IfcEntityInstanceData* e);
    IfcMappedItem (::Ifc2x3::IfcRepresentationMap* v1_MappingSource, ::Ifc2x3::IfcCartesianTransformationOperator* v2_MappingTarget);
    typedef IfcTemplatedEntityList< IfcMappedItem > list;
};
class IFC_PARSE_API IfcMaterialDefinitionRepresentation : public IfcProductRepresentation {
public:
    ::Ifc2x3::IfcMaterial* RepresentedMaterial() const;
    void setRepresentedMaterial(::Ifc2x3::IfcMaterial* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialDefinitionRepresentation (IfcEntityInstanceData* e);
    IfcMaterialDefinitionRepresentation (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentation >::ptr v3_Representations, ::Ifc2x3::IfcMaterial* v4_RepresentedMaterial);
    typedef IfcTemplatedEntityList< IfcMaterialDefinitionRepresentation > list;
};

class IFC_PARSE_API IfcMechanicalConcreteMaterialProperties : public IfcMechanicalMaterialProperties {
public:
    bool hasCompressiveStrength() const;
    double CompressiveStrength() const;
    void setCompressiveStrength(double v);
    bool hasMaxAggregateSize() const;
    double MaxAggregateSize() const;
    void setMaxAggregateSize(double v);
    bool hasAdmixturesDescription() const;
    std::string AdmixturesDescription() const;
    void setAdmixturesDescription(std::string v);
    bool hasWorkability() const;
    std::string Workability() const;
    void setWorkability(std::string v);
    bool hasProtectivePoreRatio() const;
    double ProtectivePoreRatio() const;
    void setProtectivePoreRatio(double v);
    bool hasWaterImpermeability() const;
    std::string WaterImpermeability() const;
    void setWaterImpermeability(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMechanicalConcreteMaterialProperties (IfcEntityInstanceData* e);
    IfcMechanicalConcreteMaterialProperties (::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcMechanicalConcreteMaterialProperties > list;
};
class IFC_PARSE_API IfcObjectDefinition : public IfcRoot {
public:
        IfcTemplatedEntityList< IfcRelAssigns >::ptr HasAssignments() const; // INVERSE IfcRelAssigns::RelatedObjects
    IfcTemplatedEntityList< IfcRelDecomposes >::ptr IsDecomposedBy() const; // INVERSE IfcRelDecomposes::RelatingObject
    IfcTemplatedEntityList< IfcRelDecomposes >::ptr Decomposes() const; // INVERSE IfcRelDecomposes::RelatedObjects
    IfcTemplatedEntityList< IfcRelAssociates >::ptr HasAssociations() const; // INVERSE IfcRelAssociates::RelatedObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcObjectDefinition (IfcEntityInstanceData* e);
    IfcObjectDefinition (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcObjectDefinition > list;
};
class IFC_PARSE_API IfcOneDirectionRepeatFactor : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcVector* RepeatFactor() const;
    void setRepeatFactor(::Ifc2x3::IfcVector* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOneDirectionRepeatFactor (IfcEntityInstanceData* e);
    IfcOneDirectionRepeatFactor (::Ifc2x3::IfcVector* v1_RepeatFactor);
    typedef IfcTemplatedEntityList< IfcOneDirectionRepeatFactor > list;
};
class IFC_PARSE_API IfcOpenShell : public IfcConnectedFaceSet {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOpenShell (IfcEntityInstanceData* e);
    IfcOpenShell (IfcTemplatedEntityList< ::Ifc2x3::IfcFace >::ptr v1_CfsFaces);
    typedef IfcTemplatedEntityList< IfcOpenShell > list;
};
class IFC_PARSE_API IfcOrientedEdge : public IfcEdge {
public:
    ::Ifc2x3::IfcEdge* EdgeElement() const;
    void setEdgeElement(::Ifc2x3::IfcEdge* v);
    bool Orientation() const;
    void setOrientation(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOrientedEdge (IfcEntityInstanceData* e);
    IfcOrientedEdge (::Ifc2x3::IfcEdge* v3_EdgeElement, bool v4_Orientation);
    typedef IfcTemplatedEntityList< IfcOrientedEdge > list;
};
class IFC_PARSE_API IfcParameterizedProfileDef : public IfcProfileDef {
public:
    ::Ifc2x3::IfcAxis2Placement2D* Position() const;
    void setPosition(::Ifc2x3::IfcAxis2Placement2D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcParameterizedProfileDef (IfcEntityInstanceData* e);
    IfcParameterizedProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcAxis2Placement2D* v3_Position);
    typedef IfcTemplatedEntityList< IfcParameterizedProfileDef > list;
};
class IFC_PARSE_API IfcPath : public IfcTopologicalRepresentationItem {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcOrientedEdge >::ptr EdgeList() const;
    void setEdgeList(IfcTemplatedEntityList< ::Ifc2x3::IfcOrientedEdge >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPath (IfcEntityInstanceData* e);
    IfcPath (IfcTemplatedEntityList< ::Ifc2x3::IfcOrientedEdge >::ptr v1_EdgeList);
    typedef IfcTemplatedEntityList< IfcPath > list;
};
class IFC_PARSE_API IfcPhysicalComplexQuantity : public IfcPhysicalQuantity {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcPhysicalQuantity >::ptr HasQuantities() const;
    void setHasQuantities(IfcTemplatedEntityList< ::Ifc2x3::IfcPhysicalQuantity >::ptr v);
    std::string Discrimination() const;
    void setDiscrimination(std::string v);
    bool hasQuality() const;
    std::string Quality() const;
    void setQuality(std::string v);
    bool hasUsage() const;
    std::string Usage() const;
    void setUsage(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPhysicalComplexQuantity (IfcEntityInstanceData* e);
    IfcPhysicalComplexQuantity (std::string v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcPhysicalQuantity >::ptr v3_HasQuantities, std::string v4_Discrimination, boost::optional< std::string > v5_Quality, boost::optional< std::string > v6_Usage);
    typedef IfcTemplatedEntityList< IfcPhysicalComplexQuantity > list;
};
class IFC_PARSE_API IfcPixelTexture : public IfcSurfaceTexture {
public:
    int Width() const;
    void setWidth(int v);
    int Height() const;
    void setHeight(int v);
    int ColourComponents() const;
    void setColourComponents(int v);
    std::vector< boost::dynamic_bitset<> > /*[1:?]*/ Pixel() const;
    void setPixel(std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPixelTexture (IfcEntityInstanceData* e);
    IfcPixelTexture (bool v1_RepeatS, bool v2_RepeatT, ::Ifc2x3::IfcSurfaceTextureEnum::Value v3_TextureType, ::Ifc2x3::IfcCartesianTransformationOperator2D* v4_TextureTransform, int v5_Width, int v6_Height, int v7_ColourComponents, std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v8_Pixel);
    typedef IfcTemplatedEntityList< IfcPixelTexture > list;
};
class IFC_PARSE_API IfcPlacement : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcCartesianPoint* Location() const;
    void setLocation(::Ifc2x3::IfcCartesianPoint* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlacement (IfcEntityInstanceData* e);
    IfcPlacement (::Ifc2x3::IfcCartesianPoint* v1_Location);
    typedef IfcTemplatedEntityList< IfcPlacement > list;
};
class IFC_PARSE_API IfcPlanarExtent : public IfcGeometricRepresentationItem {
public:
    double SizeInX() const;
    void setSizeInX(double v);
    double SizeInY() const;
    void setSizeInY(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlanarExtent (IfcEntityInstanceData* e);
    IfcPlanarExtent (double v1_SizeInX, double v2_SizeInY);
    typedef IfcTemplatedEntityList< IfcPlanarExtent > list;
};
class IFC_PARSE_API IfcPoint : public IfcGeometricRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPoint (IfcEntityInstanceData* e);
    IfcPoint ();
    typedef IfcTemplatedEntityList< IfcPoint > list;
};
class IFC_PARSE_API IfcPointOnCurve : public IfcPoint {
public:
    ::Ifc2x3::IfcCurve* BasisCurve() const;
    void setBasisCurve(::Ifc2x3::IfcCurve* v);
    double PointParameter() const;
    void setPointParameter(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPointOnCurve (IfcEntityInstanceData* e);
    IfcPointOnCurve (::Ifc2x3::IfcCurve* v1_BasisCurve, double v2_PointParameter);
    typedef IfcTemplatedEntityList< IfcPointOnCurve > list;
};
class IFC_PARSE_API IfcPointOnSurface : public IfcPoint {
public:
    ::Ifc2x3::IfcSurface* BasisSurface() const;
    void setBasisSurface(::Ifc2x3::IfcSurface* v);
    double PointParameterU() const;
    void setPointParameterU(double v);
    double PointParameterV() const;
    void setPointParameterV(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPointOnSurface (IfcEntityInstanceData* e);
    IfcPointOnSurface (::Ifc2x3::IfcSurface* v1_BasisSurface, double v2_PointParameterU, double v3_PointParameterV);
    typedef IfcTemplatedEntityList< IfcPointOnSurface > list;
};
class IFC_PARSE_API IfcPolyLoop : public IfcLoop {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr Polygon() const;
    void setPolygon(IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPolyLoop (IfcEntityInstanceData* e);
    IfcPolyLoop (IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr v1_Polygon);
    typedef IfcTemplatedEntityList< IfcPolyLoop > list;
};
class IFC_PARSE_API IfcPolygonalBoundedHalfSpace : public IfcHalfSpaceSolid {
public:
    ::Ifc2x3::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc2x3::IfcAxis2Placement3D* v);
    ::Ifc2x3::IfcBoundedCurve* PolygonalBoundary() const;
    void setPolygonalBoundary(::Ifc2x3::IfcBoundedCurve* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPolygonalBoundedHalfSpace (IfcEntityInstanceData* e);
    IfcPolygonalBoundedHalfSpace (::Ifc2x3::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc2x3::IfcAxis2Placement3D* v3_Position, ::Ifc2x3::IfcBoundedCurve* v4_PolygonalBoundary);
    typedef IfcTemplatedEntityList< IfcPolygonalBoundedHalfSpace > list;
};
class IFC_PARSE_API IfcPreDefinedColour : public IfcPreDefinedItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedColour (IfcEntityInstanceData* e);
    IfcPreDefinedColour (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedColour > list;
};
class IFC_PARSE_API IfcPreDefinedCurveFont : public IfcPreDefinedItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedCurveFont (IfcEntityInstanceData* e);
    IfcPreDefinedCurveFont (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedCurveFont > list;
};

class IFC_PARSE_API IfcPreDefinedDimensionSymbol : public IfcPreDefinedSymbol {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedDimensionSymbol (IfcEntityInstanceData* e);
    IfcPreDefinedDimensionSymbol (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedDimensionSymbol > list;
};

class IFC_PARSE_API IfcPreDefinedPointMarkerSymbol : public IfcPreDefinedSymbol {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedPointMarkerSymbol (IfcEntityInstanceData* e);
    IfcPreDefinedPointMarkerSymbol (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedPointMarkerSymbol > list;
};
class IFC_PARSE_API IfcProductDefinitionShape : public IfcProductRepresentation {
public:
        IfcTemplatedEntityList< IfcProduct >::ptr ShapeOfProduct() const; // INVERSE IfcProduct::Representation
    IfcTemplatedEntityList< IfcShapeAspect >::ptr HasShapeAspects() const; // INVERSE IfcShapeAspect::PartOfProductDefinitionShape
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProductDefinitionShape (IfcEntityInstanceData* e);
    IfcProductDefinitionShape (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentation >::ptr v3_Representations);
    typedef IfcTemplatedEntityList< IfcProductDefinitionShape > list;
};
class IFC_PARSE_API IfcPropertyBoundedValue : public IfcSimpleProperty {
public:
    bool hasUpperBoundValue() const;
    ::Ifc2x3::IfcValue* UpperBoundValue() const;
    void setUpperBoundValue(::Ifc2x3::IfcValue* v);
    bool hasLowerBoundValue() const;
    ::Ifc2x3::IfcValue* LowerBoundValue() const;
    void setLowerBoundValue(::Ifc2x3::IfcValue* v);
    bool hasUnit() const;
    ::Ifc2x3::IfcUnit* Unit() const;
    void setUnit(::Ifc2x3::IfcUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyBoundedValue (IfcEntityInstanceData* e);
    IfcPropertyBoundedValue (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcValue* v3_UpperBoundValue, ::Ifc2x3::IfcValue* v4_LowerBoundValue, ::Ifc2x3::IfcUnit* v5_Unit);
    typedef IfcTemplatedEntityList< IfcPropertyBoundedValue > list;
};
class IFC_PARSE_API IfcPropertyDefinition : public IfcRoot {
public:
        IfcTemplatedEntityList< IfcRelAssociates >::ptr HasAssociations() const; // INVERSE IfcRelAssociates::RelatedObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyDefinition (IfcEntityInstanceData* e);
    IfcPropertyDefinition (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcPropertyDefinition > list;
};
class IFC_PARSE_API IfcPropertyEnumeratedValue : public IfcSimpleProperty {
public:
    IfcEntityList::ptr EnumerationValues() const;
    void setEnumerationValues(IfcEntityList::ptr v);
    bool hasEnumerationReference() const;
    ::Ifc2x3::IfcPropertyEnumeration* EnumerationReference() const;
    void setEnumerationReference(::Ifc2x3::IfcPropertyEnumeration* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyEnumeratedValue (IfcEntityInstanceData* e);
    IfcPropertyEnumeratedValue (std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_EnumerationValues, ::Ifc2x3::IfcPropertyEnumeration* v4_EnumerationReference);
    typedef IfcTemplatedEntityList< IfcPropertyEnumeratedValue > list;
};
class IFC_PARSE_API IfcPropertyListValue : public IfcSimpleProperty {
public:
    IfcEntityList::ptr ListValues() const;
    void setListValues(IfcEntityList::ptr v);
    bool hasUnit() const;
    ::Ifc2x3::IfcUnit* Unit() const;
    void setUnit(::Ifc2x3::IfcUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyListValue (IfcEntityInstanceData* e);
    IfcPropertyListValue (std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_ListValues, ::Ifc2x3::IfcUnit* v4_Unit);
    typedef IfcTemplatedEntityList< IfcPropertyListValue > list;
};
class IFC_PARSE_API IfcPropertyReferenceValue : public IfcSimpleProperty {
public:
    bool hasUsageName() const;
    std::string UsageName() const;
    void setUsageName(std::string v);
    ::Ifc2x3::IfcObjectReferenceSelect* PropertyReference() const;
    void setPropertyReference(::Ifc2x3::IfcObjectReferenceSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyReferenceValue (IfcEntityInstanceData* e);
    IfcPropertyReferenceValue (std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UsageName, ::Ifc2x3::IfcObjectReferenceSelect* v4_PropertyReference);
    typedef IfcTemplatedEntityList< IfcPropertyReferenceValue > list;
};
class IFC_PARSE_API IfcPropertySetDefinition : public IfcPropertyDefinition {
public:
        IfcTemplatedEntityList< IfcRelDefinesByProperties >::ptr PropertyDefinitionOf() const; // INVERSE IfcRelDefinesByProperties::RelatingPropertyDefinition
    IfcTemplatedEntityList< IfcTypeObject >::ptr DefinesType() const; // INVERSE IfcTypeObject::HasPropertySets
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertySetDefinition (IfcEntityInstanceData* e);
    IfcPropertySetDefinition (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcPropertySetDefinition > list;
};
class IFC_PARSE_API IfcPropertySingleValue : public IfcSimpleProperty {
public:
    bool hasNominalValue() const;
    ::Ifc2x3::IfcValue* NominalValue() const;
    void setNominalValue(::Ifc2x3::IfcValue* v);
    bool hasUnit() const;
    ::Ifc2x3::IfcUnit* Unit() const;
    void setUnit(::Ifc2x3::IfcUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertySingleValue (IfcEntityInstanceData* e);
    IfcPropertySingleValue (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcValue* v3_NominalValue, ::Ifc2x3::IfcUnit* v4_Unit);
    typedef IfcTemplatedEntityList< IfcPropertySingleValue > list;
};
class IFC_PARSE_API IfcPropertyTableValue : public IfcSimpleProperty {
public:
    IfcEntityList::ptr DefiningValues() const;
    void setDefiningValues(IfcEntityList::ptr v);
    IfcEntityList::ptr DefinedValues() const;
    void setDefinedValues(IfcEntityList::ptr v);
    bool hasExpression() const;
    std::string Expression() const;
    void setExpression(std::string v);
    bool hasDefiningUnit() const;
    ::Ifc2x3::IfcUnit* DefiningUnit() const;
    void setDefiningUnit(::Ifc2x3::IfcUnit* v);
    bool hasDefinedUnit() const;
    ::Ifc2x3::IfcUnit* DefinedUnit() const;
    void setDefinedUnit(::Ifc2x3::IfcUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyTableValue (IfcEntityInstanceData* e);
    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, ::Ifc2x3::IfcUnit* v6_DefiningUnit, ::Ifc2x3::IfcUnit* v7_DefinedUnit);
    typedef IfcTemplatedEntityList< IfcPropertyTableValue > list;
};
class IFC_PARSE_API IfcRectangleProfileDef : public IfcParameterizedProfileDef {
public:
    double XDim() const;
    void setXDim(double v);
    double YDim() const;
    void setYDim(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRectangleProfileDef (IfcEntityInstanceData* e);
    IfcRectangleProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim);
    typedef IfcTemplatedEntityList< IfcRectangleProfileDef > list;
};
class IFC_PARSE_API IfcRegularTimeSeries : public IfcTimeSeries {
public:
    double TimeStep() const;
    void setTimeStep(double v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcTimeSeriesValue >::ptr Values() const;
    void setValues(IfcTemplatedEntityList< ::Ifc2x3::IfcTimeSeriesValue >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRegularTimeSeries (IfcEntityInstanceData* e);
    IfcRegularTimeSeries (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc2x3::IfcDateTimeSelect* v3_StartTime, ::Ifc2x3::IfcDateTimeSelect* v4_EndTime, ::Ifc2x3::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc2x3::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc2x3::IfcUnit* v8_Unit, double v9_TimeStep, IfcTemplatedEntityList< ::Ifc2x3::IfcTimeSeriesValue >::ptr v10_Values);
    typedef IfcTemplatedEntityList< IfcRegularTimeSeries > list;
};
class IFC_PARSE_API IfcReinforcementDefinitionProperties : public IfcPropertySetDefinition {
public:
    bool hasDefinitionType() const;
    std::string DefinitionType() const;
    void setDefinitionType(std::string v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcSectionReinforcementProperties >::ptr ReinforcementSectionDefinitions() const;
    void setReinforcementSectionDefinitions(IfcTemplatedEntityList< ::Ifc2x3::IfcSectionReinforcementProperties >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcementDefinitionProperties (IfcEntityInstanceData* e);
    IfcReinforcementDefinitionProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_DefinitionType, IfcTemplatedEntityList< ::Ifc2x3::IfcSectionReinforcementProperties >::ptr v6_ReinforcementSectionDefinitions);
    typedef IfcTemplatedEntityList< IfcReinforcementDefinitionProperties > list;
};
class IFC_PARSE_API IfcRelationship : public IfcRoot {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelationship (IfcEntityInstanceData* e);
    IfcRelationship (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcRelationship > list;
};
class IFC_PARSE_API IfcRoundedRectangleProfileDef : public IfcRectangleProfileDef {
public:
    double RoundingRadius() const;
    void setRoundingRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRoundedRectangleProfileDef (IfcEntityInstanceData* e);
    IfcRoundedRectangleProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_RoundingRadius);
    typedef IfcTemplatedEntityList< IfcRoundedRectangleProfileDef > list;
};
class IFC_PARSE_API IfcSectionedSpine : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcCompositeCurve* SpineCurve() const;
    void setSpineCurve(::Ifc2x3::IfcCompositeCurve* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcProfileDef >::ptr CrossSections() const;
    void setCrossSections(IfcTemplatedEntityList< ::Ifc2x3::IfcProfileDef >::ptr v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcAxis2Placement3D >::ptr CrossSectionPositions() const;
    void setCrossSectionPositions(IfcTemplatedEntityList< ::Ifc2x3::IfcAxis2Placement3D >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSectionedSpine (IfcEntityInstanceData* e);
    IfcSectionedSpine (::Ifc2x3::IfcCompositeCurve* v1_SpineCurve, IfcTemplatedEntityList< ::Ifc2x3::IfcProfileDef >::ptr v2_CrossSections, IfcTemplatedEntityList< ::Ifc2x3::IfcAxis2Placement3D >::ptr v3_CrossSectionPositions);
    typedef IfcTemplatedEntityList< IfcSectionedSpine > list;
};

class IFC_PARSE_API IfcServiceLifeFactor : public IfcPropertySetDefinition {
public:
    ::Ifc2x3::IfcServiceLifeFactorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcServiceLifeFactorTypeEnum::Value v);
    bool hasUpperValue() const;
    ::Ifc2x3::IfcMeasureValue* UpperValue() const;
    void setUpperValue(::Ifc2x3::IfcMeasureValue* v);
    ::Ifc2x3::IfcMeasureValue* MostUsedValue() const;
    void setMostUsedValue(::Ifc2x3::IfcMeasureValue* v);
    bool hasLowerValue() const;
    ::Ifc2x3::IfcMeasureValue* LowerValue() const;
    void setLowerValue(::Ifc2x3::IfcMeasureValue* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcServiceLifeFactor (IfcEntityInstanceData* e);
    IfcServiceLifeFactor (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcServiceLifeFactorTypeEnum::Value v5_PredefinedType, ::Ifc2x3::IfcMeasureValue* v6_UpperValue, ::Ifc2x3::IfcMeasureValue* v7_MostUsedValue, ::Ifc2x3::IfcMeasureValue* v8_LowerValue);
    typedef IfcTemplatedEntityList< IfcServiceLifeFactor > list;
};
class IFC_PARSE_API IfcShellBasedSurfaceModel : public IfcGeometricRepresentationItem {
public:
    IfcEntityList::ptr SbsmBoundary() const;
    void setSbsmBoundary(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcShellBasedSurfaceModel (IfcEntityInstanceData* e);
    IfcShellBasedSurfaceModel (IfcEntityList::ptr v1_SbsmBoundary);
    typedef IfcTemplatedEntityList< IfcShellBasedSurfaceModel > list;
};
class IFC_PARSE_API IfcSlippageConnectionCondition : public IfcStructuralConnectionCondition {
public:
    bool hasSlippageX() const;
    double SlippageX() const;
    void setSlippageX(double v);
    bool hasSlippageY() const;
    double SlippageY() const;
    void setSlippageY(double v);
    bool hasSlippageZ() const;
    double SlippageZ() const;
    void setSlippageZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSlippageConnectionCondition (IfcEntityInstanceData* e);
    IfcSlippageConnectionCondition (boost::optional< std::string > v1_Name, boost::optional< double > v2_SlippageX, boost::optional< double > v3_SlippageY, boost::optional< double > v4_SlippageZ);
    typedef IfcTemplatedEntityList< IfcSlippageConnectionCondition > list;
};
class IFC_PARSE_API IfcSolidModel : public IfcGeometricRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSolidModel (IfcEntityInstanceData* e);
    IfcSolidModel ();
    typedef IfcTemplatedEntityList< IfcSolidModel > list;
};

class IFC_PARSE_API IfcSoundProperties : public IfcPropertySetDefinition {
public:
    bool IsAttenuating() const;
    void setIsAttenuating(bool v);
    bool hasSoundScale() const;
    ::Ifc2x3::IfcSoundScaleEnum::Value SoundScale() const;
    void setSoundScale(::Ifc2x3::IfcSoundScaleEnum::Value v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcSoundValue >::ptr SoundValues() const;
    void setSoundValues(IfcTemplatedEntityList< ::Ifc2x3::IfcSoundValue >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSoundProperties (IfcEntityInstanceData* e);
    IfcSoundProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, bool v5_IsAttenuating, boost::optional< ::Ifc2x3::IfcSoundScaleEnum::Value > v6_SoundScale, IfcTemplatedEntityList< ::Ifc2x3::IfcSoundValue >::ptr v7_SoundValues);
    typedef IfcTemplatedEntityList< IfcSoundProperties > list;
};

class IFC_PARSE_API IfcSoundValue : public IfcPropertySetDefinition {
public:
    bool hasSoundLevelTimeSeries() const;
    ::Ifc2x3::IfcTimeSeries* SoundLevelTimeSeries() const;
    void setSoundLevelTimeSeries(::Ifc2x3::IfcTimeSeries* v);
    double Frequency() const;
    void setFrequency(double v);
    bool hasSoundLevelSingleValue() const;
    ::Ifc2x3::IfcDerivedMeasureValue* SoundLevelSingleValue() const;
    void setSoundLevelSingleValue(::Ifc2x3::IfcDerivedMeasureValue* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSoundValue (IfcEntityInstanceData* e);
    IfcSoundValue (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcTimeSeries* v5_SoundLevelTimeSeries, double v6_Frequency, ::Ifc2x3::IfcDerivedMeasureValue* v7_SoundLevelSingleValue);
    typedef IfcTemplatedEntityList< IfcSoundValue > list;
};

class IFC_PARSE_API IfcSpaceThermalLoadProperties : public IfcPropertySetDefinition {
public:
    bool hasApplicableValueRatio() const;
    double ApplicableValueRatio() const;
    void setApplicableValueRatio(double v);
    ::Ifc2x3::IfcThermalLoadSourceEnum::Value ThermalLoadSource() const;
    void setThermalLoadSource(::Ifc2x3::IfcThermalLoadSourceEnum::Value v);
    ::Ifc2x3::IfcPropertySourceEnum::Value PropertySource() const;
    void setPropertySource(::Ifc2x3::IfcPropertySourceEnum::Value v);
    bool hasSourceDescription() const;
    std::string SourceDescription() const;
    void setSourceDescription(std::string v);
    double MaximumValue() const;
    void setMaximumValue(double v);
    bool hasMinimumValue() const;
    double MinimumValue() const;
    void setMinimumValue(double v);
    bool hasThermalLoadTimeSeriesValues() const;
    ::Ifc2x3::IfcTimeSeries* ThermalLoadTimeSeriesValues() const;
    void setThermalLoadTimeSeriesValues(::Ifc2x3::IfcTimeSeries* v);
    bool hasUserDefinedThermalLoadSource() const;
    std::string UserDefinedThermalLoadSource() const;
    void setUserDefinedThermalLoadSource(std::string v);
    bool hasUserDefinedPropertySource() const;
    std::string UserDefinedPropertySource() const;
    void setUserDefinedPropertySource(std::string v);
    ::Ifc2x3::IfcThermalLoadTypeEnum::Value ThermalLoadType() const;
    void setThermalLoadType(::Ifc2x3::IfcThermalLoadTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpaceThermalLoadProperties (IfcEntityInstanceData* e);
    IfcSpaceThermalLoadProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_ApplicableValueRatio, ::Ifc2x3::IfcThermalLoadSourceEnum::Value v6_ThermalLoadSource, ::Ifc2x3::IfcPropertySourceEnum::Value v7_PropertySource, boost::optional< std::string > v8_SourceDescription, double v9_MaximumValue, boost::optional< double > v10_MinimumValue, ::Ifc2x3::IfcTimeSeries* v11_ThermalLoadTimeSeriesValues, boost::optional< std::string > v12_UserDefinedThermalLoadSource, boost::optional< std::string > v13_UserDefinedPropertySource, ::Ifc2x3::IfcThermalLoadTypeEnum::Value v14_ThermalLoadType);
    typedef IfcTemplatedEntityList< IfcSpaceThermalLoadProperties > list;
};
class IFC_PARSE_API IfcStructuralLoadLinearForce : public IfcStructuralLoadStatic {
public:
    bool hasLinearForceX() const;
    double LinearForceX() const;
    void setLinearForceX(double v);
    bool hasLinearForceY() const;
    double LinearForceY() const;
    void setLinearForceY(double v);
    bool hasLinearForceZ() const;
    double LinearForceZ() const;
    void setLinearForceZ(double v);
    bool hasLinearMomentX() const;
    double LinearMomentX() const;
    void setLinearMomentX(double v);
    bool hasLinearMomentY() const;
    double LinearMomentY() const;
    void setLinearMomentY(double v);
    bool hasLinearMomentZ() const;
    double LinearMomentZ() const;
    void setLinearMomentZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadLinearForce (IfcEntityInstanceData* e);
    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);
    typedef IfcTemplatedEntityList< IfcStructuralLoadLinearForce > list;
};
class IFC_PARSE_API IfcStructuralLoadPlanarForce : public IfcStructuralLoadStatic {
public:
    bool hasPlanarForceX() const;
    double PlanarForceX() const;
    void setPlanarForceX(double v);
    bool hasPlanarForceY() const;
    double PlanarForceY() const;
    void setPlanarForceY(double v);
    bool hasPlanarForceZ() const;
    double PlanarForceZ() const;
    void setPlanarForceZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadPlanarForce (IfcEntityInstanceData* e);
    IfcStructuralLoadPlanarForce (boost::optional< std::string > v1_Name, boost::optional< double > v2_PlanarForceX, boost::optional< double > v3_PlanarForceY, boost::optional< double > v4_PlanarForceZ);
    typedef IfcTemplatedEntityList< IfcStructuralLoadPlanarForce > list;
};
class IFC_PARSE_API IfcStructuralLoadSingleDisplacement : public IfcStructuralLoadStatic {
public:
    bool hasDisplacementX() const;
    double DisplacementX() const;
    void setDisplacementX(double v);
    bool hasDisplacementY() const;
    double DisplacementY() const;
    void setDisplacementY(double v);
    bool hasDisplacementZ() const;
    double DisplacementZ() const;
    void setDisplacementZ(double v);
    bool hasRotationalDisplacementRX() const;
    double RotationalDisplacementRX() const;
    void setRotationalDisplacementRX(double v);
    bool hasRotationalDisplacementRY() const;
    double RotationalDisplacementRY() const;
    void setRotationalDisplacementRY(double v);
    bool hasRotationalDisplacementRZ() const;
    double RotationalDisplacementRZ() const;
    void setRotationalDisplacementRZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadSingleDisplacement (IfcEntityInstanceData* e);
    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);
    typedef IfcTemplatedEntityList< IfcStructuralLoadSingleDisplacement > list;
};
class IFC_PARSE_API IfcStructuralLoadSingleDisplacementDistortion : public IfcStructuralLoadSingleDisplacement {
public:
    bool hasDistortion() const;
    double Distortion() const;
    void setDistortion(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadSingleDisplacementDistortion (IfcEntityInstanceData* e);
    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);
    typedef IfcTemplatedEntityList< IfcStructuralLoadSingleDisplacementDistortion > list;
};
class IFC_PARSE_API IfcStructuralLoadSingleForce : public IfcStructuralLoadStatic {
public:
    bool hasForceX() const;
    double ForceX() const;
    void setForceX(double v);
    bool hasForceY() const;
    double ForceY() const;
    void setForceY(double v);
    bool hasForceZ() const;
    double ForceZ() const;
    void setForceZ(double v);
    bool hasMomentX() const;
    double MomentX() const;
    void setMomentX(double v);
    bool hasMomentY() const;
    double MomentY() const;
    void setMomentY(double v);
    bool hasMomentZ() const;
    double MomentZ() const;
    void setMomentZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadSingleForce (IfcEntityInstanceData* e);
    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);
    typedef IfcTemplatedEntityList< IfcStructuralLoadSingleForce > list;
};
class IFC_PARSE_API IfcStructuralLoadSingleForceWarping : public IfcStructuralLoadSingleForce {
public:
    bool hasWarpingMoment() const;
    double WarpingMoment() const;
    void setWarpingMoment(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadSingleForceWarping (IfcEntityInstanceData* e);
    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);
    typedef IfcTemplatedEntityList< IfcStructuralLoadSingleForceWarping > list;
};

class IFC_PARSE_API IfcStructuralProfileProperties : public IfcGeneralProfileProperties {
public:
    bool hasTorsionalConstantX() const;
    double TorsionalConstantX() const;
    void setTorsionalConstantX(double v);
    bool hasMomentOfInertiaYZ() const;
    double MomentOfInertiaYZ() const;
    void setMomentOfInertiaYZ(double v);
    bool hasMomentOfInertiaY() const;
    double MomentOfInertiaY() const;
    void setMomentOfInertiaY(double v);
    bool hasMomentOfInertiaZ() const;
    double MomentOfInertiaZ() const;
    void setMomentOfInertiaZ(double v);
    bool hasWarpingConstant() const;
    double WarpingConstant() const;
    void setWarpingConstant(double v);
    bool hasShearCentreZ() const;
    double ShearCentreZ() const;
    void setShearCentreZ(double v);
    bool hasShearCentreY() const;
    double ShearCentreY() const;
    void setShearCentreY(double v);
    bool hasShearDeformationAreaZ() const;
    double ShearDeformationAreaZ() const;
    void setShearDeformationAreaZ(double v);
    bool hasShearDeformationAreaY() const;
    double ShearDeformationAreaY() const;
    void setShearDeformationAreaY(double v);
    bool hasMaximumSectionModulusY() const;
    double MaximumSectionModulusY() const;
    void setMaximumSectionModulusY(double v);
    bool hasMinimumSectionModulusY() const;
    double MinimumSectionModulusY() const;
    void setMinimumSectionModulusY(double v);
    bool hasMaximumSectionModulusZ() const;
    double MaximumSectionModulusZ() const;
    void setMaximumSectionModulusZ(double v);
    bool hasMinimumSectionModulusZ() const;
    double MinimumSectionModulusZ() const;
    void setMinimumSectionModulusZ(double v);
    bool hasTorsionalSectionModulus() const;
    double TorsionalSectionModulus() const;
    void setTorsionalSectionModulus(double v);
    bool hasCentreOfGravityInX() const;
    double CentreOfGravityInX() const;
    void setCentreOfGravityInX(double v);
    bool hasCentreOfGravityInY() const;
    double CentreOfGravityInY() const;
    void setCentreOfGravityInY(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralProfileProperties (IfcEntityInstanceData* e);
    IfcStructuralProfileProperties (boost::optional< std::string > v1_ProfileName, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcStructuralProfileProperties > list;
};

class IFC_PARSE_API IfcStructuralSteelProfileProperties : public IfcStructuralProfileProperties {
public:
    bool hasShearAreaZ() const;
    double ShearAreaZ() const;
    void setShearAreaZ(double v);
    bool hasShearAreaY() const;
    double ShearAreaY() const;
    void setShearAreaY(double v);
    bool hasPlasticShapeFactorY() const;
    double PlasticShapeFactorY() const;
    void setPlasticShapeFactorY(double v);
    bool hasPlasticShapeFactorZ() const;
    double PlasticShapeFactorZ() const;
    void setPlasticShapeFactorZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralSteelProfileProperties (IfcEntityInstanceData* e);
    IfcStructuralSteelProfileProperties (boost::optional< std::string > v1_ProfileName, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcStructuralSteelProfileProperties > list;
};
class IFC_PARSE_API IfcSubedge : public IfcEdge {
public:
    ::Ifc2x3::IfcEdge* ParentEdge() const;
    void setParentEdge(::Ifc2x3::IfcEdge* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSubedge (IfcEntityInstanceData* e);
    IfcSubedge (::Ifc2x3::IfcVertex* v1_EdgeStart, ::Ifc2x3::IfcVertex* v2_EdgeEnd, ::Ifc2x3::IfcEdge* v3_ParentEdge);
    typedef IfcTemplatedEntityList< IfcSubedge > list;
};
class IFC_PARSE_API IfcSurface : public IfcGeometricRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurface (IfcEntityInstanceData* e);
    IfcSurface ();
    typedef IfcTemplatedEntityList< IfcSurface > list;
};
class IFC_PARSE_API IfcSurfaceStyleRendering : public IfcSurfaceStyleShading {
public:
    bool hasTransparency() const;
    double Transparency() const;
    void setTransparency(double v);
    bool hasDiffuseColour() const;
    ::Ifc2x3::IfcColourOrFactor* DiffuseColour() const;
    void setDiffuseColour(::Ifc2x3::IfcColourOrFactor* v);
    bool hasTransmissionColour() const;
    ::Ifc2x3::IfcColourOrFactor* TransmissionColour() const;
    void setTransmissionColour(::Ifc2x3::IfcColourOrFactor* v);
    bool hasDiffuseTransmissionColour() const;
    ::Ifc2x3::IfcColourOrFactor* DiffuseTransmissionColour() const;
    void setDiffuseTransmissionColour(::Ifc2x3::IfcColourOrFactor* v);
    bool hasReflectionColour() const;
    ::Ifc2x3::IfcColourOrFactor* ReflectionColour() const;
    void setReflectionColour(::Ifc2x3::IfcColourOrFactor* v);
    bool hasSpecularColour() const;
    ::Ifc2x3::IfcColourOrFactor* SpecularColour() const;
    void setSpecularColour(::Ifc2x3::IfcColourOrFactor* v);
    bool hasSpecularHighlight() const;
    ::Ifc2x3::IfcSpecularHighlightSelect* SpecularHighlight() const;
    void setSpecularHighlight(::Ifc2x3::IfcSpecularHighlightSelect* v);
    ::Ifc2x3::IfcReflectanceMethodEnum::Value ReflectanceMethod() const;
    void setReflectanceMethod(::Ifc2x3::IfcReflectanceMethodEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyleRendering (IfcEntityInstanceData* e);
    IfcSurfaceStyleRendering (::Ifc2x3::IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency, ::Ifc2x3::IfcColourOrFactor* v3_DiffuseColour, ::Ifc2x3::IfcColourOrFactor* v4_TransmissionColour, ::Ifc2x3::IfcColourOrFactor* v5_DiffuseTransmissionColour, ::Ifc2x3::IfcColourOrFactor* v6_ReflectionColour, ::Ifc2x3::IfcColourOrFactor* v7_SpecularColour, ::Ifc2x3::IfcSpecularHighlightSelect* v8_SpecularHighlight, ::Ifc2x3::IfcReflectanceMethodEnum::Value v9_ReflectanceMethod);
    typedef IfcTemplatedEntityList< IfcSurfaceStyleRendering > list;
};
class IFC_PARSE_API IfcSweptAreaSolid : public IfcSolidModel {
public:
    ::Ifc2x3::IfcProfileDef* SweptArea() const;
    void setSweptArea(::Ifc2x3::IfcProfileDef* v);
    ::Ifc2x3::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc2x3::IfcAxis2Placement3D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSweptAreaSolid (IfcEntityInstanceData* e);
    IfcSweptAreaSolid (::Ifc2x3::IfcProfileDef* v1_SweptArea, ::Ifc2x3::IfcAxis2Placement3D* v2_Position);
    typedef IfcTemplatedEntityList< IfcSweptAreaSolid > list;
};
class IFC_PARSE_API IfcSweptDiskSolid : public IfcSolidModel {
public:
    ::Ifc2x3::IfcCurve* Directrix() const;
    void setDirectrix(::Ifc2x3::IfcCurve* v);
    double Radius() const;
    void setRadius(double v);
    bool hasInnerRadius() const;
    double InnerRadius() const;
    void setInnerRadius(double v);
    double StartParam() const;
    void setStartParam(double v);
    double EndParam() const;
    void setEndParam(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSweptDiskSolid (IfcEntityInstanceData* e);
    IfcSweptDiskSolid (::Ifc2x3::IfcCurve* v1_Directrix, double v2_Radius, boost::optional< double > v3_InnerRadius, double v4_StartParam, double v5_EndParam);
    typedef IfcTemplatedEntityList< IfcSweptDiskSolid > list;
};
class IFC_PARSE_API IfcSweptSurface : public IfcSurface {
public:
    ::Ifc2x3::IfcProfileDef* SweptCurve() const;
    void setSweptCurve(::Ifc2x3::IfcProfileDef* v);
    ::Ifc2x3::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc2x3::IfcAxis2Placement3D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSweptSurface (IfcEntityInstanceData* e);
    IfcSweptSurface (::Ifc2x3::IfcProfileDef* v1_SweptCurve, ::Ifc2x3::IfcAxis2Placement3D* v2_Position);
    typedef IfcTemplatedEntityList< IfcSweptSurface > list;
};
class IFC_PARSE_API IfcTShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double Depth() const;
    void setDepth(double v);
    double FlangeWidth() const;
    void setFlangeWidth(double v);
    double WebThickness() const;
    void setWebThickness(double v);
    double FlangeThickness() const;
    void setFlangeThickness(double v);
    bool hasFilletRadius() const;
    double FilletRadius() const;
    void setFilletRadius(double v);
    bool hasFlangeEdgeRadius() const;
    double FlangeEdgeRadius() const;
    void setFlangeEdgeRadius(double v);
    bool hasWebEdgeRadius() const;
    double WebEdgeRadius() const;
    void setWebEdgeRadius(double v);
    bool hasWebSlope() const;
    double WebSlope() const;
    void setWebSlope(double v);
    bool hasFlangeSlope() const;
    double FlangeSlope() const;
    void setFlangeSlope(double v);
    bool hasCentreOfGravityInY() const;
    double CentreOfGravityInY() const;
    void setCentreOfGravityInY(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTShapeProfileDef (IfcEntityInstanceData* e);
    IfcTShapeProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcTShapeProfileDef > list;
};

class IFC_PARSE_API IfcTerminatorSymbol : public IfcAnnotationSymbolOccurrence {
public:
    ::Ifc2x3::IfcAnnotationCurveOccurrence* AnnotatedCurve() const;
    void setAnnotatedCurve(::Ifc2x3::IfcAnnotationCurveOccurrence* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTerminatorSymbol (IfcEntityInstanceData* e);
    IfcTerminatorSymbol (::Ifc2x3::IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name, ::Ifc2x3::IfcAnnotationCurveOccurrence* v4_AnnotatedCurve);
    typedef IfcTemplatedEntityList< IfcTerminatorSymbol > list;
};
class IFC_PARSE_API IfcTextLiteral : public IfcGeometricRepresentationItem {
public:
    std::string Literal() const;
    void setLiteral(std::string v);
    ::Ifc2x3::IfcAxis2Placement* Placement() const;
    void setPlacement(::Ifc2x3::IfcAxis2Placement* v);
    ::Ifc2x3::IfcTextPath::Value Path() const;
    void setPath(::Ifc2x3::IfcTextPath::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextLiteral (IfcEntityInstanceData* e);
    IfcTextLiteral (std::string v1_Literal, ::Ifc2x3::IfcAxis2Placement* v2_Placement, ::Ifc2x3::IfcTextPath::Value v3_Path);
    typedef IfcTemplatedEntityList< IfcTextLiteral > list;
};
class IFC_PARSE_API IfcTextLiteralWithExtent : public IfcTextLiteral {
public:
    ::Ifc2x3::IfcPlanarExtent* Extent() const;
    void setExtent(::Ifc2x3::IfcPlanarExtent* v);
    std::string BoxAlignment() const;
    void setBoxAlignment(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextLiteralWithExtent (IfcEntityInstanceData* e);
    IfcTextLiteralWithExtent (std::string v1_Literal, ::Ifc2x3::IfcAxis2Placement* v2_Placement, ::Ifc2x3::IfcTextPath::Value v3_Path, ::Ifc2x3::IfcPlanarExtent* v4_Extent, std::string v5_BoxAlignment);
    typedef IfcTemplatedEntityList< IfcTextLiteralWithExtent > list;
};
class IFC_PARSE_API IfcTrapeziumProfileDef : public IfcParameterizedProfileDef {
public:
    double BottomXDim() const;
    void setBottomXDim(double v);
    double TopXDim() const;
    void setTopXDim(double v);
    double YDim() const;
    void setYDim(double v);
    double TopXOffset() const;
    void setTopXOffset(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTrapeziumProfileDef (IfcEntityInstanceData* e);
    IfcTrapeziumProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcAxis2Placement2D* v3_Position, double v4_BottomXDim, double v5_TopXDim, double v6_YDim, double v7_TopXOffset);
    typedef IfcTemplatedEntityList< IfcTrapeziumProfileDef > list;
};
class IFC_PARSE_API IfcTwoDirectionRepeatFactor : public IfcOneDirectionRepeatFactor {
public:
    ::Ifc2x3::IfcVector* SecondRepeatFactor() const;
    void setSecondRepeatFactor(::Ifc2x3::IfcVector* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTwoDirectionRepeatFactor (IfcEntityInstanceData* e);
    IfcTwoDirectionRepeatFactor (::Ifc2x3::IfcVector* v1_RepeatFactor, ::Ifc2x3::IfcVector* v2_SecondRepeatFactor);
    typedef IfcTemplatedEntityList< IfcTwoDirectionRepeatFactor > list;
};
class IFC_PARSE_API IfcTypeObject : public IfcObjectDefinition {
public:
    bool hasApplicableOccurrence() const;
    std::string ApplicableOccurrence() const;
    void setApplicableOccurrence(std::string v);
    bool hasHasPropertySets() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr HasPropertySets() const;
    void setHasPropertySets(IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr v);
        IfcTemplatedEntityList< IfcRelDefinesByType >::ptr ObjectTypeOf() const; // INVERSE IfcRelDefinesByType::RelatingType
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTypeObject (IfcEntityInstanceData* e);
    IfcTypeObject (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets);
    typedef IfcTemplatedEntityList< IfcTypeObject > list;
};
class IFC_PARSE_API IfcTypeProduct : public IfcTypeObject {
public:
    bool hasRepresentationMaps() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr RepresentationMaps() const;
    void setRepresentationMaps(IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr v);
    bool hasTag() const;
    std::string Tag() const;
    void setTag(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTypeProduct (IfcEntityInstanceData* e);
    IfcTypeProduct (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcTypeProduct > list;
};
class IFC_PARSE_API IfcUShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double Depth() const;
    void setDepth(double v);
    double FlangeWidth() const;
    void setFlangeWidth(double v);
    double WebThickness() const;
    void setWebThickness(double v);
    double FlangeThickness() const;
    void setFlangeThickness(double v);
    bool hasFilletRadius() const;
    double FilletRadius() const;
    void setFilletRadius(double v);
    bool hasEdgeRadius() const;
    double EdgeRadius() const;
    void setEdgeRadius(double v);
    bool hasFlangeSlope() const;
    double FlangeSlope() const;
    void setFlangeSlope(double v);
    bool hasCentreOfGravityInX() const;
    double CentreOfGravityInX() const;
    void setCentreOfGravityInX(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcUShapeProfileDef (IfcEntityInstanceData* e);
    IfcUShapeProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcUShapeProfileDef > list;
};
class IFC_PARSE_API IfcVector : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcDirection* Orientation() const;
    void setOrientation(::Ifc2x3::IfcDirection* v);
    double Magnitude() const;
    void setMagnitude(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVector (IfcEntityInstanceData* e);
    IfcVector (::Ifc2x3::IfcDirection* v1_Orientation, double v2_Magnitude);
    typedef IfcTemplatedEntityList< IfcVector > list;
};
class IFC_PARSE_API IfcVertexLoop : public IfcLoop {
public:
    ::Ifc2x3::IfcVertex* LoopVertex() const;
    void setLoopVertex(::Ifc2x3::IfcVertex* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVertexLoop (IfcEntityInstanceData* e);
    IfcVertexLoop (::Ifc2x3::IfcVertex* v1_LoopVertex);
    typedef IfcTemplatedEntityList< IfcVertexLoop > list;
};
class IFC_PARSE_API IfcWindowLiningProperties : public IfcPropertySetDefinition {
public:
    bool hasLiningDepth() const;
    double LiningDepth() const;
    void setLiningDepth(double v);
    bool hasLiningThickness() const;
    double LiningThickness() const;
    void setLiningThickness(double v);
    bool hasTransomThickness() const;
    double TransomThickness() const;
    void setTransomThickness(double v);
    bool hasMullionThickness() const;
    double MullionThickness() const;
    void setMullionThickness(double v);
    bool hasFirstTransomOffset() const;
    double FirstTransomOffset() const;
    void setFirstTransomOffset(double v);
    bool hasSecondTransomOffset() const;
    double SecondTransomOffset() const;
    void setSecondTransomOffset(double v);
    bool hasFirstMullionOffset() const;
    double FirstMullionOffset() const;
    void setFirstMullionOffset(double v);
    bool hasSecondMullionOffset() const;
    double SecondMullionOffset() const;
    void setSecondMullionOffset(double v);
    bool hasShapeAspectStyle() const;
    ::Ifc2x3::IfcShapeAspect* ShapeAspectStyle() const;
    void setShapeAspectStyle(::Ifc2x3::IfcShapeAspect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWindowLiningProperties (IfcEntityInstanceData* e);
    IfcWindowLiningProperties (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcShapeAspect* v13_ShapeAspectStyle);
    typedef IfcTemplatedEntityList< IfcWindowLiningProperties > list;
};
class IFC_PARSE_API IfcWindowPanelProperties : public IfcPropertySetDefinition {
public:
    ::Ifc2x3::IfcWindowPanelOperationEnum::Value OperationType() const;
    void setOperationType(::Ifc2x3::IfcWindowPanelOperationEnum::Value v);
    ::Ifc2x3::IfcWindowPanelPositionEnum::Value PanelPosition() const;
    void setPanelPosition(::Ifc2x3::IfcWindowPanelPositionEnum::Value v);
    bool hasFrameDepth() const;
    double FrameDepth() const;
    void setFrameDepth(double v);
    bool hasFrameThickness() const;
    double FrameThickness() const;
    void setFrameThickness(double v);
    bool hasShapeAspectStyle() const;
    ::Ifc2x3::IfcShapeAspect* ShapeAspectStyle() const;
    void setShapeAspectStyle(::Ifc2x3::IfcShapeAspect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWindowPanelProperties (IfcEntityInstanceData* e);
    IfcWindowPanelProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcWindowPanelOperationEnum::Value v5_OperationType, ::Ifc2x3::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc2x3::IfcShapeAspect* v9_ShapeAspectStyle);
    typedef IfcTemplatedEntityList< IfcWindowPanelProperties > list;
};
class IFC_PARSE_API IfcWindowStyle : public IfcTypeProduct {
public:
    ::Ifc2x3::IfcWindowStyleConstructionEnum::Value ConstructionType() const;
    void setConstructionType(::Ifc2x3::IfcWindowStyleConstructionEnum::Value v);
    ::Ifc2x3::IfcWindowStyleOperationEnum::Value OperationType() const;
    void setOperationType(::Ifc2x3::IfcWindowStyleOperationEnum::Value v);
    bool ParameterTakesPrecedence() const;
    void setParameterTakesPrecedence(bool v);
    bool Sizeable() const;
    void setSizeable(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWindowStyle (IfcEntityInstanceData* e);
    IfcWindowStyle (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, ::Ifc2x3::IfcWindowStyleConstructionEnum::Value v9_ConstructionType, ::Ifc2x3::IfcWindowStyleOperationEnum::Value v10_OperationType, bool v11_ParameterTakesPrecedence, bool v12_Sizeable);
    typedef IfcTemplatedEntityList< IfcWindowStyle > list;
};
class IFC_PARSE_API IfcZShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double Depth() const;
    void setDepth(double v);
    double FlangeWidth() const;
    void setFlangeWidth(double v);
    double WebThickness() const;
    void setWebThickness(double v);
    double FlangeThickness() const;
    void setFlangeThickness(double v);
    bool hasFilletRadius() const;
    double FilletRadius() const;
    void setFilletRadius(double v);
    bool hasEdgeRadius() const;
    double EdgeRadius() const;
    void setEdgeRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcZShapeProfileDef (IfcEntityInstanceData* e);
    IfcZShapeProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcZShapeProfileDef > list;
};

class IFC_PARSE_API IfcAnnotationCurveOccurrence : public IfcAnnotationOccurrence {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAnnotationCurveOccurrence (IfcEntityInstanceData* e);
    IfcAnnotationCurveOccurrence (::Ifc2x3::IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcAnnotationCurveOccurrence > list;
};
class IFC_PARSE_API IfcAnnotationFillArea : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcCurve* OuterBoundary() const;
    void setOuterBoundary(::Ifc2x3::IfcCurve* v);
    bool hasInnerBoundaries() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcCurve >::ptr InnerBoundaries() const;
    void setInnerBoundaries(IfcTemplatedEntityList< ::Ifc2x3::IfcCurve >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAnnotationFillArea (IfcEntityInstanceData* e);
    IfcAnnotationFillArea (::Ifc2x3::IfcCurve* v1_OuterBoundary, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcCurve >::ptr > v2_InnerBoundaries);
    typedef IfcTemplatedEntityList< IfcAnnotationFillArea > list;
};

class IFC_PARSE_API IfcAnnotationFillAreaOccurrence : public IfcAnnotationOccurrence {
public:
    bool hasFillStyleTarget() const;
    ::Ifc2x3::IfcPoint* FillStyleTarget() const;
    void setFillStyleTarget(::Ifc2x3::IfcPoint* v);
    bool hasGlobalOrLocal() const;
    ::Ifc2x3::IfcGlobalOrLocalEnum::Value GlobalOrLocal() const;
    void setGlobalOrLocal(::Ifc2x3::IfcGlobalOrLocalEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAnnotationFillAreaOccurrence (IfcEntityInstanceData* e);
    IfcAnnotationFillAreaOccurrence (::Ifc2x3::IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name, ::Ifc2x3::IfcPoint* v4_FillStyleTarget, boost::optional< ::Ifc2x3::IfcGlobalOrLocalEnum::Value > v5_GlobalOrLocal);
    typedef IfcTemplatedEntityList< IfcAnnotationFillAreaOccurrence > list;
};

class IFC_PARSE_API IfcAnnotationSurface : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcGeometricRepresentationItem* Item() const;
    void setItem(::Ifc2x3::IfcGeometricRepresentationItem* v);
    bool hasTextureCoordinates() const;
    ::Ifc2x3::IfcTextureCoordinate* TextureCoordinates() const;
    void setTextureCoordinates(::Ifc2x3::IfcTextureCoordinate* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAnnotationSurface (IfcEntityInstanceData* e);
    IfcAnnotationSurface (::Ifc2x3::IfcGeometricRepresentationItem* v1_Item, ::Ifc2x3::IfcTextureCoordinate* v2_TextureCoordinates);
    typedef IfcTemplatedEntityList< IfcAnnotationSurface > list;
};
class IFC_PARSE_API IfcAxis1Placement : public IfcPlacement {
public:
    bool hasAxis() const;
    ::Ifc2x3::IfcDirection* Axis() const;
    void setAxis(::Ifc2x3::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAxis1Placement (IfcEntityInstanceData* e);
    IfcAxis1Placement (::Ifc2x3::IfcCartesianPoint* v1_Location, ::Ifc2x3::IfcDirection* v2_Axis);
    typedef IfcTemplatedEntityList< IfcAxis1Placement > list;
};
class IFC_PARSE_API IfcAxis2Placement2D : public IfcPlacement {
public:
    bool hasRefDirection() const;
    ::Ifc2x3::IfcDirection* RefDirection() const;
    void setRefDirection(::Ifc2x3::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAxis2Placement2D (IfcEntityInstanceData* e);
    IfcAxis2Placement2D (::Ifc2x3::IfcCartesianPoint* v1_Location, ::Ifc2x3::IfcDirection* v2_RefDirection);
    typedef IfcTemplatedEntityList< IfcAxis2Placement2D > list;
};
class IFC_PARSE_API IfcAxis2Placement3D : public IfcPlacement {
public:
    bool hasAxis() const;
    ::Ifc2x3::IfcDirection* Axis() const;
    void setAxis(::Ifc2x3::IfcDirection* v);
    bool hasRefDirection() const;
    ::Ifc2x3::IfcDirection* RefDirection() const;
    void setRefDirection(::Ifc2x3::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAxis2Placement3D (IfcEntityInstanceData* e);
    IfcAxis2Placement3D (::Ifc2x3::IfcCartesianPoint* v1_Location, ::Ifc2x3::IfcDirection* v2_Axis, ::Ifc2x3::IfcDirection* v3_RefDirection);
    typedef IfcTemplatedEntityList< IfcAxis2Placement3D > list;
};
class IFC_PARSE_API IfcBooleanResult : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcBooleanOperator::Value Operator() const;
    void setOperator(::Ifc2x3::IfcBooleanOperator::Value v);
    ::Ifc2x3::IfcBooleanOperand* FirstOperand() const;
    void setFirstOperand(::Ifc2x3::IfcBooleanOperand* v);
    ::Ifc2x3::IfcBooleanOperand* SecondOperand() const;
    void setSecondOperand(::Ifc2x3::IfcBooleanOperand* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBooleanResult (IfcEntityInstanceData* e);
    IfcBooleanResult (::Ifc2x3::IfcBooleanOperator::Value v1_Operator, ::Ifc2x3::IfcBooleanOperand* v2_FirstOperand, ::Ifc2x3::IfcBooleanOperand* v3_SecondOperand);
    typedef IfcTemplatedEntityList< IfcBooleanResult > list;
};
class IFC_PARSE_API IfcBoundedSurface : public IfcSurface {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundedSurface (IfcEntityInstanceData* e);
    IfcBoundedSurface ();
    typedef IfcTemplatedEntityList< IfcBoundedSurface > list;
};
class IFC_PARSE_API IfcBoundingBox : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcCartesianPoint* Corner() const;
    void setCorner(::Ifc2x3::IfcCartesianPoint* v);
    double XDim() const;
    void setXDim(double v);
    double YDim() const;
    void setYDim(double v);
    double ZDim() const;
    void setZDim(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundingBox (IfcEntityInstanceData* e);
    IfcBoundingBox (::Ifc2x3::IfcCartesianPoint* v1_Corner, double v2_XDim, double v3_YDim, double v4_ZDim);
    typedef IfcTemplatedEntityList< IfcBoundingBox > list;
};
class IFC_PARSE_API IfcBoxedHalfSpace : public IfcHalfSpaceSolid {
public:
    ::Ifc2x3::IfcBoundingBox* Enclosure() const;
    void setEnclosure(::Ifc2x3::IfcBoundingBox* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoxedHalfSpace (IfcEntityInstanceData* e);
    IfcBoxedHalfSpace (::Ifc2x3::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc2x3::IfcBoundingBox* v3_Enclosure);
    typedef IfcTemplatedEntityList< IfcBoxedHalfSpace > list;
};
class IFC_PARSE_API IfcCShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double Depth() const;
    void setDepth(double v);
    double Width() const;
    void setWidth(double v);
    double WallThickness() const;
    void setWallThickness(double v);
    double Girth() const;
    void setGirth(double v);
    bool hasInternalFilletRadius() const;
    double InternalFilletRadius() const;
    void setInternalFilletRadius(double v);
    bool hasCentreOfGravityInX() const;
    double CentreOfGravityInX() const;
    void setCentreOfGravityInX(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCShapeProfileDef (IfcEntityInstanceData* e);
    IfcCShapeProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcCShapeProfileDef > list;
};
class IFC_PARSE_API IfcCartesianPoint : public IfcPoint {
public:
    std::vector< double > /*[1:3]*/ Coordinates() const;
    void setCoordinates(std::vector< double > /*[1:3]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianPoint (IfcEntityInstanceData* e);
    IfcCartesianPoint (std::vector< double > /*[1:3]*/ v1_Coordinates);
    typedef IfcTemplatedEntityList< IfcCartesianPoint > list;
};
class IFC_PARSE_API IfcCartesianTransformationOperator : public IfcGeometricRepresentationItem {
public:
    bool hasAxis1() const;
    ::Ifc2x3::IfcDirection* Axis1() const;
    void setAxis1(::Ifc2x3::IfcDirection* v);
    bool hasAxis2() const;
    ::Ifc2x3::IfcDirection* Axis2() const;
    void setAxis2(::Ifc2x3::IfcDirection* v);
    ::Ifc2x3::IfcCartesianPoint* LocalOrigin() const;
    void setLocalOrigin(::Ifc2x3::IfcCartesianPoint* v);
    bool hasScale() const;
    double Scale() const;
    void setScale(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianTransformationOperator (IfcEntityInstanceData* e);
    IfcCartesianTransformationOperator (::Ifc2x3::IfcDirection* v1_Axis1, ::Ifc2x3::IfcDirection* v2_Axis2, ::Ifc2x3::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale);
    typedef IfcTemplatedEntityList< IfcCartesianTransformationOperator > list;
};
class IFC_PARSE_API IfcCartesianTransformationOperator2D : public IfcCartesianTransformationOperator {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianTransformationOperator2D (IfcEntityInstanceData* e);
    IfcCartesianTransformationOperator2D (::Ifc2x3::IfcDirection* v1_Axis1, ::Ifc2x3::IfcDirection* v2_Axis2, ::Ifc2x3::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale);
    typedef IfcTemplatedEntityList< IfcCartesianTransformationOperator2D > list;
};
class IFC_PARSE_API IfcCartesianTransformationOperator2DnonUniform : public IfcCartesianTransformationOperator2D {
public:
    bool hasScale2() const;
    double Scale2() const;
    void setScale2(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianTransformationOperator2DnonUniform (IfcEntityInstanceData* e);
    IfcCartesianTransformationOperator2DnonUniform (::Ifc2x3::IfcDirection* v1_Axis1, ::Ifc2x3::IfcDirection* v2_Axis2, ::Ifc2x3::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, boost::optional< double > v5_Scale2);
    typedef IfcTemplatedEntityList< IfcCartesianTransformationOperator2DnonUniform > list;
};
class IFC_PARSE_API IfcCartesianTransformationOperator3D : public IfcCartesianTransformationOperator {
public:
    bool hasAxis3() const;
    ::Ifc2x3::IfcDirection* Axis3() const;
    void setAxis3(::Ifc2x3::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianTransformationOperator3D (IfcEntityInstanceData* e);
    IfcCartesianTransformationOperator3D (::Ifc2x3::IfcDirection* v1_Axis1, ::Ifc2x3::IfcDirection* v2_Axis2, ::Ifc2x3::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc2x3::IfcDirection* v5_Axis3);
    typedef IfcTemplatedEntityList< IfcCartesianTransformationOperator3D > list;
};
class IFC_PARSE_API IfcCartesianTransformationOperator3DnonUniform : public IfcCartesianTransformationOperator3D {
public:
    bool hasScale2() const;
    double Scale2() const;
    void setScale2(double v);
    bool hasScale3() const;
    double Scale3() const;
    void setScale3(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianTransformationOperator3DnonUniform (IfcEntityInstanceData* e);
    IfcCartesianTransformationOperator3DnonUniform (::Ifc2x3::IfcDirection* v1_Axis1, ::Ifc2x3::IfcDirection* v2_Axis2, ::Ifc2x3::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc2x3::IfcDirection* v5_Axis3, boost::optional< double > v6_Scale2, boost::optional< double > v7_Scale3);
    typedef IfcTemplatedEntityList< IfcCartesianTransformationOperator3DnonUniform > list;
};
class IFC_PARSE_API IfcCircleProfileDef : public IfcParameterizedProfileDef {
public:
    double Radius() const;
    void setRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCircleProfileDef (IfcEntityInstanceData* e);
    IfcCircleProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcAxis2Placement2D* v3_Position, double v4_Radius);
    typedef IfcTemplatedEntityList< IfcCircleProfileDef > list;
};
class IFC_PARSE_API IfcClosedShell : public IfcConnectedFaceSet {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcClosedShell (IfcEntityInstanceData* e);
    IfcClosedShell (IfcTemplatedEntityList< ::Ifc2x3::IfcFace >::ptr v1_CfsFaces);
    typedef IfcTemplatedEntityList< IfcClosedShell > list;
};
class IFC_PARSE_API IfcCompositeCurveSegment : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcTransitionCode::Value Transition() const;
    void setTransition(::Ifc2x3::IfcTransitionCode::Value v);
    bool SameSense() const;
    void setSameSense(bool v);
    ::Ifc2x3::IfcCurve* ParentCurve() const;
    void setParentCurve(::Ifc2x3::IfcCurve* v);
        IfcTemplatedEntityList< IfcCompositeCurve >::ptr UsingCurves() const; // INVERSE IfcCompositeCurve::Segments
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCompositeCurveSegment (IfcEntityInstanceData* e);
    IfcCompositeCurveSegment (::Ifc2x3::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc2x3::IfcCurve* v3_ParentCurve);
    typedef IfcTemplatedEntityList< IfcCompositeCurveSegment > list;
};

class IFC_PARSE_API IfcCraneRailAShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double OverallHeight() const;
    void setOverallHeight(double v);
    double BaseWidth2() const;
    void setBaseWidth2(double v);
    bool hasRadius() const;
    double Radius() const;
    void setRadius(double v);
    double HeadWidth() const;
    void setHeadWidth(double v);
    double HeadDepth2() const;
    void setHeadDepth2(double v);
    double HeadDepth3() const;
    void setHeadDepth3(double v);
    double WebThickness() const;
    void setWebThickness(double v);
    double BaseWidth4() const;
    void setBaseWidth4(double v);
    double BaseDepth1() const;
    void setBaseDepth1(double v);
    double BaseDepth2() const;
    void setBaseDepth2(double v);
    double BaseDepth3() const;
    void setBaseDepth3(double v);
    bool hasCentreOfGravityInY() const;
    double CentreOfGravityInY() const;
    void setCentreOfGravityInY(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCraneRailAShapeProfileDef (IfcEntityInstanceData* e);
    IfcCraneRailAShapeProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcCraneRailAShapeProfileDef > list;
};

class IFC_PARSE_API IfcCraneRailFShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double OverallHeight() const;
    void setOverallHeight(double v);
    double HeadWidth() const;
    void setHeadWidth(double v);
    bool hasRadius() const;
    double Radius() const;
    void setRadius(double v);
    double HeadDepth2() const;
    void setHeadDepth2(double v);
    double HeadDepth3() const;
    void setHeadDepth3(double v);
    double WebThickness() const;
    void setWebThickness(double v);
    double BaseDepth1() const;
    void setBaseDepth1(double v);
    double BaseDepth2() const;
    void setBaseDepth2(double v);
    bool hasCentreOfGravityInY() const;
    double CentreOfGravityInY() const;
    void setCentreOfGravityInY(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCraneRailFShapeProfileDef (IfcEntityInstanceData* e);
    IfcCraneRailFShapeProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcCraneRailFShapeProfileDef > list;
};
class IFC_PARSE_API IfcCsgPrimitive3D : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc2x3::IfcAxis2Placement3D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCsgPrimitive3D (IfcEntityInstanceData* e);
    IfcCsgPrimitive3D (::Ifc2x3::IfcAxis2Placement3D* v1_Position);
    typedef IfcTemplatedEntityList< IfcCsgPrimitive3D > list;
};
class IFC_PARSE_API IfcCsgSolid : public IfcSolidModel {
public:
    ::Ifc2x3::IfcCsgSelect* TreeRootExpression() const;
    void setTreeRootExpression(::Ifc2x3::IfcCsgSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCsgSolid (IfcEntityInstanceData* e);
    IfcCsgSolid (::Ifc2x3::IfcCsgSelect* v1_TreeRootExpression);
    typedef IfcTemplatedEntityList< IfcCsgSolid > list;
};
class IFC_PARSE_API IfcCurve : public IfcGeometricRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurve (IfcEntityInstanceData* e);
    IfcCurve ();
    typedef IfcTemplatedEntityList< IfcCurve > list;
};
class IFC_PARSE_API IfcCurveBoundedPlane : public IfcBoundedSurface {
public:
    ::Ifc2x3::IfcPlane* BasisSurface() const;
    void setBasisSurface(::Ifc2x3::IfcPlane* v);
    ::Ifc2x3::IfcCurve* OuterBoundary() const;
    void setOuterBoundary(::Ifc2x3::IfcCurve* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcCurve >::ptr InnerBoundaries() const;
    void setInnerBoundaries(IfcTemplatedEntityList< ::Ifc2x3::IfcCurve >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurveBoundedPlane (IfcEntityInstanceData* e);
    IfcCurveBoundedPlane (::Ifc2x3::IfcPlane* v1_BasisSurface, ::Ifc2x3::IfcCurve* v2_OuterBoundary, IfcTemplatedEntityList< ::Ifc2x3::IfcCurve >::ptr v3_InnerBoundaries);
    typedef IfcTemplatedEntityList< IfcCurveBoundedPlane > list;
};
class IFC_PARSE_API IfcDefinedSymbol : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcDefinedSymbolSelect* Definition() const;
    void setDefinition(::Ifc2x3::IfcDefinedSymbolSelect* v);
    ::Ifc2x3::IfcCartesianTransformationOperator2D* Target() const;
    void setTarget(::Ifc2x3::IfcCartesianTransformationOperator2D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDefinedSymbol (IfcEntityInstanceData* e);
    IfcDefinedSymbol (::Ifc2x3::IfcDefinedSymbolSelect* v1_Definition, ::Ifc2x3::IfcCartesianTransformationOperator2D* v2_Target);
    typedef IfcTemplatedEntityList< IfcDefinedSymbol > list;
};

class IFC_PARSE_API IfcDimensionCurve : public IfcAnnotationCurveOccurrence {
public:
        IfcTemplatedEntityList< IfcTerminatorSymbol >::ptr AnnotatedBySymbols() const; // INVERSE IfcTerminatorSymbol::AnnotatedCurve
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDimensionCurve (IfcEntityInstanceData* e);
    IfcDimensionCurve (::Ifc2x3::IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcDimensionCurve > list;
};

class IFC_PARSE_API IfcDimensionCurveTerminator : public IfcTerminatorSymbol {
public:
    ::Ifc2x3::IfcDimensionExtentUsage::Value Role() const;
    void setRole(::Ifc2x3::IfcDimensionExtentUsage::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDimensionCurveTerminator (IfcEntityInstanceData* e);
    IfcDimensionCurveTerminator (::Ifc2x3::IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name, ::Ifc2x3::IfcAnnotationCurveOccurrence* v4_AnnotatedCurve, ::Ifc2x3::IfcDimensionExtentUsage::Value v5_Role);
    typedef IfcTemplatedEntityList< IfcDimensionCurveTerminator > list;
};
class IFC_PARSE_API IfcDirection : public IfcGeometricRepresentationItem {
public:
    std::vector< double > /*[2:3]*/ DirectionRatios() const;
    void setDirectionRatios(std::vector< double > /*[2:3]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDirection (IfcEntityInstanceData* e);
    IfcDirection (std::vector< double > /*[2:3]*/ v1_DirectionRatios);
    typedef IfcTemplatedEntityList< IfcDirection > list;
};
class IFC_PARSE_API IfcDoorLiningProperties : public IfcPropertySetDefinition {
public:
    bool hasLiningDepth() const;
    double LiningDepth() const;
    void setLiningDepth(double v);
    bool hasLiningThickness() const;
    double LiningThickness() const;
    void setLiningThickness(double v);
    bool hasThresholdDepth() const;
    double ThresholdDepth() const;
    void setThresholdDepth(double v);
    bool hasThresholdThickness() const;
    double ThresholdThickness() const;
    void setThresholdThickness(double v);
    bool hasTransomThickness() const;
    double TransomThickness() const;
    void setTransomThickness(double v);
    bool hasTransomOffset() const;
    double TransomOffset() const;
    void setTransomOffset(double v);
    bool hasLiningOffset() const;
    double LiningOffset() const;
    void setLiningOffset(double v);
    bool hasThresholdOffset() const;
    double ThresholdOffset() const;
    void setThresholdOffset(double v);
    bool hasCasingThickness() const;
    double CasingThickness() const;
    void setCasingThickness(double v);
    bool hasCasingDepth() const;
    double CasingDepth() const;
    void setCasingDepth(double v);
    bool hasShapeAspectStyle() const;
    ::Ifc2x3::IfcShapeAspect* ShapeAspectStyle() const;
    void setShapeAspectStyle(::Ifc2x3::IfcShapeAspect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDoorLiningProperties (IfcEntityInstanceData* e);
    IfcDoorLiningProperties (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcShapeAspect* v15_ShapeAspectStyle);
    typedef IfcTemplatedEntityList< IfcDoorLiningProperties > list;
};
class IFC_PARSE_API IfcDoorPanelProperties : public IfcPropertySetDefinition {
public:
    bool hasPanelDepth() const;
    double PanelDepth() const;
    void setPanelDepth(double v);
    ::Ifc2x3::IfcDoorPanelOperationEnum::Value PanelOperation() const;
    void setPanelOperation(::Ifc2x3::IfcDoorPanelOperationEnum::Value v);
    bool hasPanelWidth() const;
    double PanelWidth() const;
    void setPanelWidth(double v);
    ::Ifc2x3::IfcDoorPanelPositionEnum::Value PanelPosition() const;
    void setPanelPosition(::Ifc2x3::IfcDoorPanelPositionEnum::Value v);
    bool hasShapeAspectStyle() const;
    ::Ifc2x3::IfcShapeAspect* ShapeAspectStyle() const;
    void setShapeAspectStyle(::Ifc2x3::IfcShapeAspect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDoorPanelProperties (IfcEntityInstanceData* e);
    IfcDoorPanelProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_PanelDepth, ::Ifc2x3::IfcDoorPanelOperationEnum::Value v6_PanelOperation, boost::optional< double > v7_PanelWidth, ::Ifc2x3::IfcDoorPanelPositionEnum::Value v8_PanelPosition, ::Ifc2x3::IfcShapeAspect* v9_ShapeAspectStyle);
    typedef IfcTemplatedEntityList< IfcDoorPanelProperties > list;
};
class IFC_PARSE_API IfcDoorStyle : public IfcTypeProduct {
public:
    ::Ifc2x3::IfcDoorStyleOperationEnum::Value OperationType() const;
    void setOperationType(::Ifc2x3::IfcDoorStyleOperationEnum::Value v);
    ::Ifc2x3::IfcDoorStyleConstructionEnum::Value ConstructionType() const;
    void setConstructionType(::Ifc2x3::IfcDoorStyleConstructionEnum::Value v);
    bool ParameterTakesPrecedence() const;
    void setParameterTakesPrecedence(bool v);
    bool Sizeable() const;
    void setSizeable(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDoorStyle (IfcEntityInstanceData* e);
    IfcDoorStyle (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, ::Ifc2x3::IfcDoorStyleOperationEnum::Value v9_OperationType, ::Ifc2x3::IfcDoorStyleConstructionEnum::Value v10_ConstructionType, bool v11_ParameterTakesPrecedence, bool v12_Sizeable);
    typedef IfcTemplatedEntityList< IfcDoorStyle > list;
};

class IFC_PARSE_API IfcDraughtingCallout : public IfcGeometricRepresentationItem {
public:
    IfcEntityList::ptr Contents() const;
    void setContents(IfcEntityList::ptr v);
        IfcTemplatedEntityList< IfcDraughtingCalloutRelationship >::ptr IsRelatedFromCallout() const; // INVERSE IfcDraughtingCalloutRelationship::RelatedDraughtingCallout
    IfcTemplatedEntityList< IfcDraughtingCalloutRelationship >::ptr IsRelatedToCallout() const; // INVERSE IfcDraughtingCalloutRelationship::RelatingDraughtingCallout
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDraughtingCallout (IfcEntityInstanceData* e);
    IfcDraughtingCallout (IfcEntityList::ptr v1_Contents);
    typedef IfcTemplatedEntityList< IfcDraughtingCallout > list;
};
class IFC_PARSE_API IfcDraughtingPreDefinedColour : public IfcPreDefinedColour {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDraughtingPreDefinedColour (IfcEntityInstanceData* e);
    IfcDraughtingPreDefinedColour (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcDraughtingPreDefinedColour > list;
};
class IFC_PARSE_API IfcDraughtingPreDefinedCurveFont : public IfcPreDefinedCurveFont {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDraughtingPreDefinedCurveFont (IfcEntityInstanceData* e);
    IfcDraughtingPreDefinedCurveFont (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcDraughtingPreDefinedCurveFont > list;
};
class IFC_PARSE_API IfcEdgeLoop : public IfcLoop {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcOrientedEdge >::ptr EdgeList() const;
    void setEdgeList(IfcTemplatedEntityList< ::Ifc2x3::IfcOrientedEdge >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEdgeLoop (IfcEntityInstanceData* e);
    IfcEdgeLoop (IfcTemplatedEntityList< ::Ifc2x3::IfcOrientedEdge >::ptr v1_EdgeList);
    typedef IfcTemplatedEntityList< IfcEdgeLoop > list;
};
class IFC_PARSE_API IfcElementQuantity : public IfcPropertySetDefinition {
public:
    bool hasMethodOfMeasurement() const;
    std::string MethodOfMeasurement() const;
    void setMethodOfMeasurement(std::string v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcPhysicalQuantity >::ptr Quantities() const;
    void setQuantities(IfcTemplatedEntityList< ::Ifc2x3::IfcPhysicalQuantity >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementQuantity (IfcEntityInstanceData* e);
    IfcElementQuantity (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_MethodOfMeasurement, IfcTemplatedEntityList< ::Ifc2x3::IfcPhysicalQuantity >::ptr v6_Quantities);
    typedef IfcTemplatedEntityList< IfcElementQuantity > list;
};
class IFC_PARSE_API IfcElementType : public IfcTypeProduct {
public:
    bool hasElementType() const;
    std::string ElementType() const;
    void setElementType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementType (IfcEntityInstanceData* e);
    IfcElementType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcElementType > list;
};
class IFC_PARSE_API IfcElementarySurface : public IfcSurface {
public:
    ::Ifc2x3::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc2x3::IfcAxis2Placement3D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementarySurface (IfcEntityInstanceData* e);
    IfcElementarySurface (::Ifc2x3::IfcAxis2Placement3D* v1_Position);
    typedef IfcTemplatedEntityList< IfcElementarySurface > list;
};
class IFC_PARSE_API IfcEllipseProfileDef : public IfcParameterizedProfileDef {
public:
    double SemiAxis1() const;
    void setSemiAxis1(double v);
    double SemiAxis2() const;
    void setSemiAxis2(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEllipseProfileDef (IfcEntityInstanceData* e);
    IfcEllipseProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcAxis2Placement2D* v3_Position, double v4_SemiAxis1, double v5_SemiAxis2);
    typedef IfcTemplatedEntityList< IfcEllipseProfileDef > list;
};

class IFC_PARSE_API IfcEnergyProperties : public IfcPropertySetDefinition {
public:
    bool hasEnergySequence() const;
    ::Ifc2x3::IfcEnergySequenceEnum::Value EnergySequence() const;
    void setEnergySequence(::Ifc2x3::IfcEnergySequenceEnum::Value v);
    bool hasUserDefinedEnergySequence() const;
    std::string UserDefinedEnergySequence() const;
    void setUserDefinedEnergySequence(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEnergyProperties (IfcEntityInstanceData* e);
    IfcEnergyProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc2x3::IfcEnergySequenceEnum::Value > v5_EnergySequence, boost::optional< std::string > v6_UserDefinedEnergySequence);
    typedef IfcTemplatedEntityList< IfcEnergyProperties > list;
};
class IFC_PARSE_API IfcExtrudedAreaSolid : public IfcSweptAreaSolid {
public:
    ::Ifc2x3::IfcDirection* ExtrudedDirection() const;
    void setExtrudedDirection(::Ifc2x3::IfcDirection* v);
    double Depth() const;
    void setDepth(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExtrudedAreaSolid (IfcEntityInstanceData* e);
    IfcExtrudedAreaSolid (::Ifc2x3::IfcProfileDef* v1_SweptArea, ::Ifc2x3::IfcAxis2Placement3D* v2_Position, ::Ifc2x3::IfcDirection* v3_ExtrudedDirection, double v4_Depth);
    typedef IfcTemplatedEntityList< IfcExtrudedAreaSolid > list;
};
class IFC_PARSE_API IfcFaceBasedSurfaceModel : public IfcGeometricRepresentationItem {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcConnectedFaceSet >::ptr FbsmFaces() const;
    void setFbsmFaces(IfcTemplatedEntityList< ::Ifc2x3::IfcConnectedFaceSet >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFaceBasedSurfaceModel (IfcEntityInstanceData* e);
    IfcFaceBasedSurfaceModel (IfcTemplatedEntityList< ::Ifc2x3::IfcConnectedFaceSet >::ptr v1_FbsmFaces);
    typedef IfcTemplatedEntityList< IfcFaceBasedSurfaceModel > list;
};
class IFC_PARSE_API IfcFillAreaStyleHatching : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcCurveStyle* HatchLineAppearance() const;
    void setHatchLineAppearance(::Ifc2x3::IfcCurveStyle* v);
    ::Ifc2x3::IfcHatchLineDistanceSelect* StartOfNextHatchLine() const;
    void setStartOfNextHatchLine(::Ifc2x3::IfcHatchLineDistanceSelect* v);
    bool hasPointOfReferenceHatchLine() const;
    ::Ifc2x3::IfcCartesianPoint* PointOfReferenceHatchLine() const;
    void setPointOfReferenceHatchLine(::Ifc2x3::IfcCartesianPoint* v);
    bool hasPatternStart() const;
    ::Ifc2x3::IfcCartesianPoint* PatternStart() const;
    void setPatternStart(::Ifc2x3::IfcCartesianPoint* v);
    double HatchLineAngle() const;
    void setHatchLineAngle(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFillAreaStyleHatching (IfcEntityInstanceData* e);
    IfcFillAreaStyleHatching (::Ifc2x3::IfcCurveStyle* v1_HatchLineAppearance, ::Ifc2x3::IfcHatchLineDistanceSelect* v2_StartOfNextHatchLine, ::Ifc2x3::IfcCartesianPoint* v3_PointOfReferenceHatchLine, ::Ifc2x3::IfcCartesianPoint* v4_PatternStart, double v5_HatchLineAngle);
    typedef IfcTemplatedEntityList< IfcFillAreaStyleHatching > list;
};
class IFC_PARSE_API IfcFillAreaStyleTileSymbolWithStyle : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcAnnotationSymbolOccurrence* Symbol() const;
    void setSymbol(::Ifc2x3::IfcAnnotationSymbolOccurrence* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFillAreaStyleTileSymbolWithStyle (IfcEntityInstanceData* e);
    IfcFillAreaStyleTileSymbolWithStyle (::Ifc2x3::IfcAnnotationSymbolOccurrence* v1_Symbol);
    typedef IfcTemplatedEntityList< IfcFillAreaStyleTileSymbolWithStyle > list;
};
class IFC_PARSE_API IfcFillAreaStyleTiles : public IfcGeometricRepresentationItem {
public:
    ::Ifc2x3::IfcOneDirectionRepeatFactor* TilingPattern() const;
    void setTilingPattern(::Ifc2x3::IfcOneDirectionRepeatFactor* v);
    IfcEntityList::ptr Tiles() const;
    void setTiles(IfcEntityList::ptr v);
    double TilingScale() const;
    void setTilingScale(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFillAreaStyleTiles (IfcEntityInstanceData* e);
    IfcFillAreaStyleTiles (::Ifc2x3::IfcOneDirectionRepeatFactor* v1_TilingPattern, IfcEntityList::ptr v2_Tiles, double v3_TilingScale);
    typedef IfcTemplatedEntityList< IfcFillAreaStyleTiles > list;
};

class IFC_PARSE_API IfcFluidFlowProperties : public IfcPropertySetDefinition {
public:
    ::Ifc2x3::IfcPropertySourceEnum::Value PropertySource() const;
    void setPropertySource(::Ifc2x3::IfcPropertySourceEnum::Value v);
    bool hasFlowConditionTimeSeries() const;
    ::Ifc2x3::IfcTimeSeries* FlowConditionTimeSeries() const;
    void setFlowConditionTimeSeries(::Ifc2x3::IfcTimeSeries* v);
    bool hasVelocityTimeSeries() const;
    ::Ifc2x3::IfcTimeSeries* VelocityTimeSeries() const;
    void setVelocityTimeSeries(::Ifc2x3::IfcTimeSeries* v);
    bool hasFlowrateTimeSeries() const;
    ::Ifc2x3::IfcTimeSeries* FlowrateTimeSeries() const;
    void setFlowrateTimeSeries(::Ifc2x3::IfcTimeSeries* v);
    ::Ifc2x3::IfcMaterial* Fluid() const;
    void setFluid(::Ifc2x3::IfcMaterial* v);
    bool hasPressureTimeSeries() const;
    ::Ifc2x3::IfcTimeSeries* PressureTimeSeries() const;
    void setPressureTimeSeries(::Ifc2x3::IfcTimeSeries* v);
    bool hasUserDefinedPropertySource() const;
    std::string UserDefinedPropertySource() const;
    void setUserDefinedPropertySource(std::string v);
    bool hasTemperatureSingleValue() const;
    double TemperatureSingleValue() const;
    void setTemperatureSingleValue(double v);
    bool hasWetBulbTemperatureSingleValue() const;
    double WetBulbTemperatureSingleValue() const;
    void setWetBulbTemperatureSingleValue(double v);
    bool hasWetBulbTemperatureTimeSeries() const;
    ::Ifc2x3::IfcTimeSeries* WetBulbTemperatureTimeSeries() const;
    void setWetBulbTemperatureTimeSeries(::Ifc2x3::IfcTimeSeries* v);
    bool hasTemperatureTimeSeries() const;
    ::Ifc2x3::IfcTimeSeries* TemperatureTimeSeries() const;
    void setTemperatureTimeSeries(::Ifc2x3::IfcTimeSeries* v);
    bool hasFlowrateSingleValue() const;
    ::Ifc2x3::IfcDerivedMeasureValue* FlowrateSingleValue() const;
    void setFlowrateSingleValue(::Ifc2x3::IfcDerivedMeasureValue* v);
    bool hasFlowConditionSingleValue() const;
    double FlowConditionSingleValue() const;
    void setFlowConditionSingleValue(double v);
    bool hasVelocitySingleValue() const;
    double VelocitySingleValue() const;
    void setVelocitySingleValue(double v);
    bool hasPressureSingleValue() const;
    double PressureSingleValue() const;
    void setPressureSingleValue(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFluidFlowProperties (IfcEntityInstanceData* e);
    IfcFluidFlowProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcPropertySourceEnum::Value v5_PropertySource, ::Ifc2x3::IfcTimeSeries* v6_FlowConditionTimeSeries, ::Ifc2x3::IfcTimeSeries* v7_VelocityTimeSeries, ::Ifc2x3::IfcTimeSeries* v8_FlowrateTimeSeries, ::Ifc2x3::IfcMaterial* v9_Fluid, ::Ifc2x3::IfcTimeSeries* v10_PressureTimeSeries, boost::optional< std::string > v11_UserDefinedPropertySource, boost::optional< double > v12_TemperatureSingleValue, boost::optional< double > v13_WetBulbTemperatureSingleValue, ::Ifc2x3::IfcTimeSeries* v14_WetBulbTemperatureTimeSeries, ::Ifc2x3::IfcTimeSeries* v15_TemperatureTimeSeries, ::Ifc2x3::IfcDerivedMeasureValue* v16_FlowrateSingleValue, boost::optional< double > v17_FlowConditionSingleValue, boost::optional< double > v18_VelocitySingleValue, boost::optional< double > v19_PressureSingleValue);
    typedef IfcTemplatedEntityList< IfcFluidFlowProperties > list;
};
class IFC_PARSE_API IfcFurnishingElementType : public IfcElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFurnishingElementType (IfcEntityInstanceData* e);
    IfcFurnishingElementType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFurnishingElementType > list;
};
class IFC_PARSE_API IfcFurnitureType : public IfcFurnishingElementType {
public:
    ::Ifc2x3::IfcAssemblyPlaceEnum::Value AssemblyPlace() const;
    void setAssemblyPlace(::Ifc2x3::IfcAssemblyPlaceEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFurnitureType (IfcEntityInstanceData* e);
    IfcFurnitureType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcAssemblyPlaceEnum::Value v10_AssemblyPlace);
    typedef IfcTemplatedEntityList< IfcFurnitureType > list;
};
class IFC_PARSE_API IfcGeometricCurveSet : public IfcGeometricSet {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeometricCurveSet (IfcEntityInstanceData* e);
    IfcGeometricCurveSet (IfcEntityList::ptr v1_Elements);
    typedef IfcTemplatedEntityList< IfcGeometricCurveSet > list;
};
class IFC_PARSE_API IfcIShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double OverallWidth() const;
    void setOverallWidth(double v);
    double OverallDepth() const;
    void setOverallDepth(double v);
    double WebThickness() const;
    void setWebThickness(double v);
    double FlangeThickness() const;
    void setFlangeThickness(double v);
    bool hasFilletRadius() const;
    double FilletRadius() const;
    void setFilletRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIShapeProfileDef (IfcEntityInstanceData* e);
    IfcIShapeProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcAxis2Placement2D* v3_Position, double v4_OverallWidth, double v5_OverallDepth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius);
    typedef IfcTemplatedEntityList< IfcIShapeProfileDef > list;
};
class IFC_PARSE_API IfcLShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double Depth() const;
    void setDepth(double v);
    bool hasWidth() const;
    double Width() const;
    void setWidth(double v);
    double Thickness() const;
    void setThickness(double v);
    bool hasFilletRadius() const;
    double FilletRadius() const;
    void setFilletRadius(double v);
    bool hasEdgeRadius() const;
    double EdgeRadius() const;
    void setEdgeRadius(double v);
    bool hasLegSlope() const;
    double LegSlope() const;
    void setLegSlope(double v);
    bool hasCentreOfGravityInX() const;
    double CentreOfGravityInX() const;
    void setCentreOfGravityInX(double v);
    bool hasCentreOfGravityInY() const;
    double CentreOfGravityInY() const;
    void setCentreOfGravityInY(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLShapeProfileDef (IfcEntityInstanceData* e);
    IfcLShapeProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcLShapeProfileDef > list;
};
class IFC_PARSE_API IfcLine : public IfcCurve {
public:
    ::Ifc2x3::IfcCartesianPoint* Pnt() const;
    void setPnt(::Ifc2x3::IfcCartesianPoint* v);
    ::Ifc2x3::IfcVector* Dir() const;
    void setDir(::Ifc2x3::IfcVector* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLine (IfcEntityInstanceData* e);
    IfcLine (::Ifc2x3::IfcCartesianPoint* v1_Pnt, ::Ifc2x3::IfcVector* v2_Dir);
    typedef IfcTemplatedEntityList< IfcLine > list;
};
class IFC_PARSE_API IfcManifoldSolidBrep : public IfcSolidModel {
public:
    ::Ifc2x3::IfcClosedShell* Outer() const;
    void setOuter(::Ifc2x3::IfcClosedShell* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcManifoldSolidBrep (IfcEntityInstanceData* e);
    IfcManifoldSolidBrep (::Ifc2x3::IfcClosedShell* v1_Outer);
    typedef IfcTemplatedEntityList< IfcManifoldSolidBrep > list;
};
class IFC_PARSE_API IfcObject : public IfcObjectDefinition {
public:
    bool hasObjectType() const;
    std::string ObjectType() const;
    void setObjectType(std::string v);
        IfcTemplatedEntityList< IfcRelDefines >::ptr IsDefinedBy() const; // INVERSE IfcRelDefines::RelatedObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcObject (IfcEntityInstanceData* e);
    IfcObject (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcObject > list;
};
class IFC_PARSE_API IfcOffsetCurve2D : public IfcCurve {
public:
    ::Ifc2x3::IfcCurve* BasisCurve() const;
    void setBasisCurve(::Ifc2x3::IfcCurve* v);
    double Distance() const;
    void setDistance(double v);
    bool SelfIntersect() const;
    void setSelfIntersect(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOffsetCurve2D (IfcEntityInstanceData* e);
    IfcOffsetCurve2D (::Ifc2x3::IfcCurve* v1_BasisCurve, double v2_Distance, bool v3_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcOffsetCurve2D > list;
};
class IFC_PARSE_API IfcOffsetCurve3D : public IfcCurve {
public:
    ::Ifc2x3::IfcCurve* BasisCurve() const;
    void setBasisCurve(::Ifc2x3::IfcCurve* v);
    double Distance() const;
    void setDistance(double v);
    bool SelfIntersect() const;
    void setSelfIntersect(bool v);
    ::Ifc2x3::IfcDirection* RefDirection() const;
    void setRefDirection(::Ifc2x3::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOffsetCurve3D (IfcEntityInstanceData* e);
    IfcOffsetCurve3D (::Ifc2x3::IfcCurve* v1_BasisCurve, double v2_Distance, bool v3_SelfIntersect, ::Ifc2x3::IfcDirection* v4_RefDirection);
    typedef IfcTemplatedEntityList< IfcOffsetCurve3D > list;
};
class IFC_PARSE_API IfcPermeableCoveringProperties : public IfcPropertySetDefinition {
public:
    ::Ifc2x3::IfcPermeableCoveringOperationEnum::Value OperationType() const;
    void setOperationType(::Ifc2x3::IfcPermeableCoveringOperationEnum::Value v);
    ::Ifc2x3::IfcWindowPanelPositionEnum::Value PanelPosition() const;
    void setPanelPosition(::Ifc2x3::IfcWindowPanelPositionEnum::Value v);
    bool hasFrameDepth() const;
    double FrameDepth() const;
    void setFrameDepth(double v);
    bool hasFrameThickness() const;
    double FrameThickness() const;
    void setFrameThickness(double v);
    bool hasShapeAspectStyle() const;
    ::Ifc2x3::IfcShapeAspect* ShapeAspectStyle() const;
    void setShapeAspectStyle(::Ifc2x3::IfcShapeAspect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPermeableCoveringProperties (IfcEntityInstanceData* e);
    IfcPermeableCoveringProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcPermeableCoveringOperationEnum::Value v5_OperationType, ::Ifc2x3::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc2x3::IfcShapeAspect* v9_ShapeAspectStyle);
    typedef IfcTemplatedEntityList< IfcPermeableCoveringProperties > list;
};
class IFC_PARSE_API IfcPlanarBox : public IfcPlanarExtent {
public:
    ::Ifc2x3::IfcAxis2Placement* Placement() const;
    void setPlacement(::Ifc2x3::IfcAxis2Placement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlanarBox (IfcEntityInstanceData* e);
    IfcPlanarBox (double v1_SizeInX, double v2_SizeInY, ::Ifc2x3::IfcAxis2Placement* v3_Placement);
    typedef IfcTemplatedEntityList< IfcPlanarBox > list;
};
class IFC_PARSE_API IfcPlane : public IfcElementarySurface {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlane (IfcEntityInstanceData* e);
    IfcPlane (::Ifc2x3::IfcAxis2Placement3D* v1_Position);
    typedef IfcTemplatedEntityList< IfcPlane > list;
};
class IFC_PARSE_API IfcProcess : public IfcObject {
public:
        IfcTemplatedEntityList< IfcRelAssignsToProcess >::ptr OperatesOn() const; // INVERSE IfcRelAssignsToProcess::RelatingProcess
    IfcTemplatedEntityList< IfcRelSequence >::ptr IsSuccessorFrom() const; // INVERSE IfcRelSequence::RelatedProcess
    IfcTemplatedEntityList< IfcRelSequence >::ptr IsPredecessorTo() const; // INVERSE IfcRelSequence::RelatingProcess
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProcess (IfcEntityInstanceData* e);
    IfcProcess (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcProcess > list;
};
class IFC_PARSE_API IfcProduct : public IfcObject {
public:
    bool hasObjectPlacement() const;
    ::Ifc2x3::IfcObjectPlacement* ObjectPlacement() const;
    void setObjectPlacement(::Ifc2x3::IfcObjectPlacement* v);
    bool hasRepresentation() const;
    ::Ifc2x3::IfcProductRepresentation* Representation() const;
    void setRepresentation(::Ifc2x3::IfcProductRepresentation* v);
        IfcTemplatedEntityList< IfcRelAssignsToProduct >::ptr ReferencedBy() const; // INVERSE IfcRelAssignsToProduct::RelatingProduct
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProduct (IfcEntityInstanceData* e);
    IfcProduct (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation);
    typedef IfcTemplatedEntityList< IfcProduct > list;
};
class IFC_PARSE_API IfcProject : public IfcObject {
public:
    bool hasLongName() const;
    std::string LongName() const;
    void setLongName(std::string v);
    bool hasPhase() const;
    std::string Phase() const;
    void setPhase(std::string v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationContext >::ptr RepresentationContexts() const;
    void setRepresentationContexts(IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationContext >::ptr v);
    ::Ifc2x3::IfcUnitAssignment* UnitsInContext() const;
    void setUnitsInContext(::Ifc2x3::IfcUnitAssignment* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProject (IfcEntityInstanceData* e);
    IfcProject (std::string v1_GlobalId, ::Ifc2x3::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< ::Ifc2x3::IfcRepresentationContext >::ptr v8_RepresentationContexts, ::Ifc2x3::IfcUnitAssignment* v9_UnitsInContext);
    typedef IfcTemplatedEntityList< IfcProject > list;
};

class IFC_PARSE_API IfcProjectionCurve : public IfcAnnotationCurveOccurrence {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProjectionCurve (IfcEntityInstanceData* e);
    IfcProjectionCurve (::Ifc2x3::IfcRepresentationItem* v1_Item, IfcTemplatedEntityList< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v2_Styles, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcProjectionCurve > list;
};
class IFC_PARSE_API IfcPropertySet : public IfcPropertySetDefinition {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr HasProperties() const;
    void setHasProperties(IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertySet (IfcEntityInstanceData* e);
    IfcPropertySet (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v5_HasProperties);
    typedef IfcTemplatedEntityList< IfcPropertySet > list;
};
class IFC_PARSE_API IfcProxy : public IfcProduct {
public:
    ::Ifc2x3::IfcObjectTypeEnum::Value ProxyType() const;
    void setProxyType(::Ifc2x3::IfcObjectTypeEnum::Value v);
    bool hasTag() const;
    std::string Tag() const;
    void setTag(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProxy (IfcEntityInstanceData* e);
    IfcProxy (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcObjectTypeEnum::Value v8_ProxyType, boost::optional< std::string > v9_Tag);
    typedef IfcTemplatedEntityList< IfcProxy > list;
};
class IFC_PARSE_API IfcRectangleHollowProfileDef : public IfcRectangleProfileDef {
public:
    double WallThickness() const;
    void setWallThickness(double v);
    bool hasInnerFilletRadius() const;
    double InnerFilletRadius() const;
    void setInnerFilletRadius(double v);
    bool hasOuterFilletRadius() const;
    double OuterFilletRadius() const;
    void setOuterFilletRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRectangleHollowProfileDef (IfcEntityInstanceData* e);
    IfcRectangleHollowProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_WallThickness, boost::optional< double > v7_InnerFilletRadius, boost::optional< double > v8_OuterFilletRadius);
    typedef IfcTemplatedEntityList< IfcRectangleHollowProfileDef > list;
};
class IFC_PARSE_API IfcRectangularPyramid : public IfcCsgPrimitive3D {
public:
    double XLength() const;
    void setXLength(double v);
    double YLength() const;
    void setYLength(double v);
    double Height() const;
    void setHeight(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRectangularPyramid (IfcEntityInstanceData* e);
    IfcRectangularPyramid (::Ifc2x3::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_Height);
    typedef IfcTemplatedEntityList< IfcRectangularPyramid > list;
};
class IFC_PARSE_API IfcRectangularTrimmedSurface : public IfcBoundedSurface {
public:
    ::Ifc2x3::IfcSurface* BasisSurface() const;
    void setBasisSurface(::Ifc2x3::IfcSurface* v);
    double U1() const;
    void setU1(double v);
    double V1() const;
    void setV1(double v);
    double U2() const;
    void setU2(double v);
    double V2() const;
    void setV2(double v);
    bool Usense() const;
    void setUsense(bool v);
    bool Vsense() const;
    void setVsense(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRectangularTrimmedSurface (IfcEntityInstanceData* e);
    IfcRectangularTrimmedSurface (::Ifc2x3::IfcSurface* v1_BasisSurface, double v2_U1, double v3_V1, double v4_U2, double v5_V2, bool v6_Usense, bool v7_Vsense);
    typedef IfcTemplatedEntityList< IfcRectangularTrimmedSurface > list;
};
class IFC_PARSE_API IfcRelAssigns : public IfcRelationship {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr RelatedObjects() const;
    void setRelatedObjects(IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v);
    bool hasRelatedObjectsType() const;
    ::Ifc2x3::IfcObjectTypeEnum::Value RelatedObjectsType() const;
    void setRelatedObjectsType(::Ifc2x3::IfcObjectTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssigns (IfcEntityInstanceData* e);
    IfcRelAssigns (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v6_RelatedObjectsType);
    typedef IfcTemplatedEntityList< IfcRelAssigns > list;
};
class IFC_PARSE_API IfcRelAssignsToActor : public IfcRelAssigns {
public:
    ::Ifc2x3::IfcActor* RelatingActor() const;
    void setRelatingActor(::Ifc2x3::IfcActor* v);
    bool hasActingRole() const;
    ::Ifc2x3::IfcActorRole* ActingRole() const;
    void setActingRole(::Ifc2x3::IfcActorRole* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToActor (IfcEntityInstanceData* e);
    IfcRelAssignsToActor (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc2x3::IfcActor* v7_RelatingActor, ::Ifc2x3::IfcActorRole* v8_ActingRole);
    typedef IfcTemplatedEntityList< IfcRelAssignsToActor > list;
};
class IFC_PARSE_API IfcRelAssignsToControl : public IfcRelAssigns {
public:
    ::Ifc2x3::IfcControl* RelatingControl() const;
    void setRelatingControl(::Ifc2x3::IfcControl* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToControl (IfcEntityInstanceData* e);
    IfcRelAssignsToControl (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc2x3::IfcControl* v7_RelatingControl);
    typedef IfcTemplatedEntityList< IfcRelAssignsToControl > list;
};
class IFC_PARSE_API IfcRelAssignsToGroup : public IfcRelAssigns {
public:
    ::Ifc2x3::IfcGroup* RelatingGroup() const;
    void setRelatingGroup(::Ifc2x3::IfcGroup* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToGroup (IfcEntityInstanceData* e);
    IfcRelAssignsToGroup (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc2x3::IfcGroup* v7_RelatingGroup);
    typedef IfcTemplatedEntityList< IfcRelAssignsToGroup > list;
};
class IFC_PARSE_API IfcRelAssignsToProcess : public IfcRelAssigns {
public:
    ::Ifc2x3::IfcProcess* RelatingProcess() const;
    void setRelatingProcess(::Ifc2x3::IfcProcess* v);
    bool hasQuantityInProcess() const;
    ::Ifc2x3::IfcMeasureWithUnit* QuantityInProcess() const;
    void setQuantityInProcess(::Ifc2x3::IfcMeasureWithUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToProcess (IfcEntityInstanceData* e);
    IfcRelAssignsToProcess (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc2x3::IfcProcess* v7_RelatingProcess, ::Ifc2x3::IfcMeasureWithUnit* v8_QuantityInProcess);
    typedef IfcTemplatedEntityList< IfcRelAssignsToProcess > list;
};
class IFC_PARSE_API IfcRelAssignsToProduct : public IfcRelAssigns {
public:
    ::Ifc2x3::IfcProduct* RelatingProduct() const;
    void setRelatingProduct(::Ifc2x3::IfcProduct* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToProduct (IfcEntityInstanceData* e);
    IfcRelAssignsToProduct (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc2x3::IfcProduct* v7_RelatingProduct);
    typedef IfcTemplatedEntityList< IfcRelAssignsToProduct > list;
};

class IFC_PARSE_API IfcRelAssignsToProjectOrder : public IfcRelAssignsToControl {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToProjectOrder (IfcEntityInstanceData* e);
    IfcRelAssignsToProjectOrder (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc2x3::IfcControl* v7_RelatingControl);
    typedef IfcTemplatedEntityList< IfcRelAssignsToProjectOrder > list;
};
class IFC_PARSE_API IfcRelAssignsToResource : public IfcRelAssigns {
public:
    ::Ifc2x3::IfcResource* RelatingResource() const;
    void setRelatingResource(::Ifc2x3::IfcResource* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToResource (IfcEntityInstanceData* e);
    IfcRelAssignsToResource (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc2x3::IfcResource* v7_RelatingResource);
    typedef IfcTemplatedEntityList< IfcRelAssignsToResource > list;
};
class IFC_PARSE_API IfcRelAssociates : public IfcRelationship {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcRoot >::ptr RelatedObjects() const;
    void setRelatedObjects(IfcTemplatedEntityList< ::Ifc2x3::IfcRoot >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociates (IfcEntityInstanceData* e);
    IfcRelAssociates (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRoot >::ptr v5_RelatedObjects);
    typedef IfcTemplatedEntityList< IfcRelAssociates > list;
};

class IFC_PARSE_API IfcRelAssociatesAppliedValue : public IfcRelAssociates {
public:
    ::Ifc2x3::IfcAppliedValue* RelatingAppliedValue() const;
    void setRelatingAppliedValue(::Ifc2x3::IfcAppliedValue* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesAppliedValue (IfcEntityInstanceData* e);
    IfcRelAssociatesAppliedValue (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRoot >::ptr v5_RelatedObjects, ::Ifc2x3::IfcAppliedValue* v6_RelatingAppliedValue);
    typedef IfcTemplatedEntityList< IfcRelAssociatesAppliedValue > list;
};
class IFC_PARSE_API IfcRelAssociatesApproval : public IfcRelAssociates {
public:
    ::Ifc2x3::IfcApproval* RelatingApproval() const;
    void setRelatingApproval(::Ifc2x3::IfcApproval* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesApproval (IfcEntityInstanceData* e);
    IfcRelAssociatesApproval (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRoot >::ptr v5_RelatedObjects, ::Ifc2x3::IfcApproval* v6_RelatingApproval);
    typedef IfcTemplatedEntityList< IfcRelAssociatesApproval > list;
};
class IFC_PARSE_API IfcRelAssociatesClassification : public IfcRelAssociates {
public:
    ::Ifc2x3::IfcClassificationNotationSelect* RelatingClassification() const;
    void setRelatingClassification(::Ifc2x3::IfcClassificationNotationSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesClassification (IfcEntityInstanceData* e);
    IfcRelAssociatesClassification (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRoot >::ptr v5_RelatedObjects, ::Ifc2x3::IfcClassificationNotationSelect* v6_RelatingClassification);
    typedef IfcTemplatedEntityList< IfcRelAssociatesClassification > list;
};
class IFC_PARSE_API IfcRelAssociatesConstraint : public IfcRelAssociates {
public:
    std::string Intent() const;
    void setIntent(std::string v);
    ::Ifc2x3::IfcConstraint* RelatingConstraint() const;
    void setRelatingConstraint(::Ifc2x3::IfcConstraint* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesConstraint (IfcEntityInstanceData* e);
    IfcRelAssociatesConstraint (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRoot >::ptr v5_RelatedObjects, std::string v6_Intent, ::Ifc2x3::IfcConstraint* v7_RelatingConstraint);
    typedef IfcTemplatedEntityList< IfcRelAssociatesConstraint > list;
};
class IFC_PARSE_API IfcRelAssociatesDocument : public IfcRelAssociates {
public:
    ::Ifc2x3::IfcDocumentSelect* RelatingDocument() const;
    void setRelatingDocument(::Ifc2x3::IfcDocumentSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesDocument (IfcEntityInstanceData* e);
    IfcRelAssociatesDocument (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRoot >::ptr v5_RelatedObjects, ::Ifc2x3::IfcDocumentSelect* v6_RelatingDocument);
    typedef IfcTemplatedEntityList< IfcRelAssociatesDocument > list;
};
class IFC_PARSE_API IfcRelAssociatesLibrary : public IfcRelAssociates {
public:
    ::Ifc2x3::IfcLibrarySelect* RelatingLibrary() const;
    void setRelatingLibrary(::Ifc2x3::IfcLibrarySelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesLibrary (IfcEntityInstanceData* e);
    IfcRelAssociatesLibrary (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRoot >::ptr v5_RelatedObjects, ::Ifc2x3::IfcLibrarySelect* v6_RelatingLibrary);
    typedef IfcTemplatedEntityList< IfcRelAssociatesLibrary > list;
};
class IFC_PARSE_API IfcRelAssociatesMaterial : public IfcRelAssociates {
public:
    ::Ifc2x3::IfcMaterialSelect* RelatingMaterial() const;
    void setRelatingMaterial(::Ifc2x3::IfcMaterialSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesMaterial (IfcEntityInstanceData* e);
    IfcRelAssociatesMaterial (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRoot >::ptr v5_RelatedObjects, ::Ifc2x3::IfcMaterialSelect* v6_RelatingMaterial);
    typedef IfcTemplatedEntityList< IfcRelAssociatesMaterial > list;
};

class IFC_PARSE_API IfcRelAssociatesProfileProperties : public IfcRelAssociates {
public:
    ::Ifc2x3::IfcProfileProperties* RelatingProfileProperties() const;
    void setRelatingProfileProperties(::Ifc2x3::IfcProfileProperties* v);
    bool hasProfileSectionLocation() const;
    ::Ifc2x3::IfcShapeAspect* ProfileSectionLocation() const;
    void setProfileSectionLocation(::Ifc2x3::IfcShapeAspect* v);
    bool hasProfileOrientation() const;
    ::Ifc2x3::IfcOrientationSelect* ProfileOrientation() const;
    void setProfileOrientation(::Ifc2x3::IfcOrientationSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesProfileProperties (IfcEntityInstanceData* e);
    IfcRelAssociatesProfileProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcRoot >::ptr v5_RelatedObjects, ::Ifc2x3::IfcProfileProperties* v6_RelatingProfileProperties, ::Ifc2x3::IfcShapeAspect* v7_ProfileSectionLocation, ::Ifc2x3::IfcOrientationSelect* v8_ProfileOrientation);
    typedef IfcTemplatedEntityList< IfcRelAssociatesProfileProperties > list;
};
class IFC_PARSE_API IfcRelConnects : public IfcRelationship {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnects (IfcEntityInstanceData* e);
    IfcRelConnects (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcRelConnects > list;
};
class IFC_PARSE_API IfcRelConnectsElements : public IfcRelConnects {
public:
    bool hasConnectionGeometry() const;
    ::Ifc2x3::IfcConnectionGeometry* ConnectionGeometry() const;
    void setConnectionGeometry(::Ifc2x3::IfcConnectionGeometry* v);
    ::Ifc2x3::IfcElement* RelatingElement() const;
    void setRelatingElement(::Ifc2x3::IfcElement* v);
    ::Ifc2x3::IfcElement* RelatedElement() const;
    void setRelatedElement(::Ifc2x3::IfcElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsElements (IfcEntityInstanceData* e);
    IfcRelConnectsElements (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc2x3::IfcElement* v6_RelatingElement, ::Ifc2x3::IfcElement* v7_RelatedElement);
    typedef IfcTemplatedEntityList< IfcRelConnectsElements > list;
};
class IFC_PARSE_API IfcRelConnectsPathElements : public IfcRelConnectsElements {
public:
    std::vector< int > /*[0:?]*/ RelatingPriorities() const;
    void setRelatingPriorities(std::vector< int > /*[0:?]*/ v);
    std::vector< int > /*[0:?]*/ RelatedPriorities() const;
    void setRelatedPriorities(std::vector< int > /*[0:?]*/ v);
    ::Ifc2x3::IfcConnectionTypeEnum::Value RelatedConnectionType() const;
    void setRelatedConnectionType(::Ifc2x3::IfcConnectionTypeEnum::Value v);
    ::Ifc2x3::IfcConnectionTypeEnum::Value RelatingConnectionType() const;
    void setRelatingConnectionType(::Ifc2x3::IfcConnectionTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsPathElements (IfcEntityInstanceData* e);
    IfcRelConnectsPathElements (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc2x3::IfcElement* v6_RelatingElement, ::Ifc2x3::IfcElement* v7_RelatedElement, std::vector< int > /*[0:?]*/ v8_RelatingPriorities, std::vector< int > /*[0:?]*/ v9_RelatedPriorities, ::Ifc2x3::IfcConnectionTypeEnum::Value v10_RelatedConnectionType, ::Ifc2x3::IfcConnectionTypeEnum::Value v11_RelatingConnectionType);
    typedef IfcTemplatedEntityList< IfcRelConnectsPathElements > list;
};
class IFC_PARSE_API IfcRelConnectsPortToElement : public IfcRelConnects {
public:
    ::Ifc2x3::IfcPort* RelatingPort() const;
    void setRelatingPort(::Ifc2x3::IfcPort* v);
    ::Ifc2x3::IfcElement* RelatedElement() const;
    void setRelatedElement(::Ifc2x3::IfcElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsPortToElement (IfcEntityInstanceData* e);
    IfcRelConnectsPortToElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcPort* v5_RelatingPort, ::Ifc2x3::IfcElement* v6_RelatedElement);
    typedef IfcTemplatedEntityList< IfcRelConnectsPortToElement > list;
};
class IFC_PARSE_API IfcRelConnectsPorts : public IfcRelConnects {
public:
    ::Ifc2x3::IfcPort* RelatingPort() const;
    void setRelatingPort(::Ifc2x3::IfcPort* v);
    ::Ifc2x3::IfcPort* RelatedPort() const;
    void setRelatedPort(::Ifc2x3::IfcPort* v);
    bool hasRealizingElement() const;
    ::Ifc2x3::IfcElement* RealizingElement() const;
    void setRealizingElement(::Ifc2x3::IfcElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsPorts (IfcEntityInstanceData* e);
    IfcRelConnectsPorts (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcPort* v5_RelatingPort, ::Ifc2x3::IfcPort* v6_RelatedPort, ::Ifc2x3::IfcElement* v7_RealizingElement);
    typedef IfcTemplatedEntityList< IfcRelConnectsPorts > list;
};
class IFC_PARSE_API IfcRelConnectsStructuralActivity : public IfcRelConnects {
public:
    ::Ifc2x3::IfcStructuralActivityAssignmentSelect* RelatingElement() const;
    void setRelatingElement(::Ifc2x3::IfcStructuralActivityAssignmentSelect* v);
    ::Ifc2x3::IfcStructuralActivity* RelatedStructuralActivity() const;
    void setRelatedStructuralActivity(::Ifc2x3::IfcStructuralActivity* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsStructuralActivity (IfcEntityInstanceData* e);
    IfcRelConnectsStructuralActivity (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcStructuralActivityAssignmentSelect* v5_RelatingElement, ::Ifc2x3::IfcStructuralActivity* v6_RelatedStructuralActivity);
    typedef IfcTemplatedEntityList< IfcRelConnectsStructuralActivity > list;
};

class IFC_PARSE_API IfcRelConnectsStructuralElement : public IfcRelConnects {
public:
    ::Ifc2x3::IfcElement* RelatingElement() const;
    void setRelatingElement(::Ifc2x3::IfcElement* v);
    ::Ifc2x3::IfcStructuralMember* RelatedStructuralMember() const;
    void setRelatedStructuralMember(::Ifc2x3::IfcStructuralMember* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsStructuralElement (IfcEntityInstanceData* e);
    IfcRelConnectsStructuralElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcElement* v5_RelatingElement, ::Ifc2x3::IfcStructuralMember* v6_RelatedStructuralMember);
    typedef IfcTemplatedEntityList< IfcRelConnectsStructuralElement > list;
};
class IFC_PARSE_API IfcRelConnectsStructuralMember : public IfcRelConnects {
public:
    ::Ifc2x3::IfcStructuralMember* RelatingStructuralMember() const;
    void setRelatingStructuralMember(::Ifc2x3::IfcStructuralMember* v);
    ::Ifc2x3::IfcStructuralConnection* RelatedStructuralConnection() const;
    void setRelatedStructuralConnection(::Ifc2x3::IfcStructuralConnection* v);
    bool hasAppliedCondition() const;
    ::Ifc2x3::IfcBoundaryCondition* AppliedCondition() const;
    void setAppliedCondition(::Ifc2x3::IfcBoundaryCondition* v);
    bool hasAdditionalConditions() const;
    ::Ifc2x3::IfcStructuralConnectionCondition* AdditionalConditions() const;
    void setAdditionalConditions(::Ifc2x3::IfcStructuralConnectionCondition* v);
    bool hasSupportedLength() const;
    double SupportedLength() const;
    void setSupportedLength(double v);
    bool hasConditionCoordinateSystem() const;
    ::Ifc2x3::IfcAxis2Placement3D* ConditionCoordinateSystem() const;
    void setConditionCoordinateSystem(::Ifc2x3::IfcAxis2Placement3D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsStructuralMember (IfcEntityInstanceData* e);
    IfcRelConnectsStructuralMember (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc2x3::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc2x3::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc2x3::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc2x3::IfcAxis2Placement3D* v10_ConditionCoordinateSystem);
    typedef IfcTemplatedEntityList< IfcRelConnectsStructuralMember > list;
};
class IFC_PARSE_API IfcRelConnectsWithEccentricity : public IfcRelConnectsStructuralMember {
public:
    ::Ifc2x3::IfcConnectionGeometry* ConnectionConstraint() const;
    void setConnectionConstraint(::Ifc2x3::IfcConnectionGeometry* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsWithEccentricity (IfcEntityInstanceData* e);
    IfcRelConnectsWithEccentricity (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc2x3::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc2x3::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc2x3::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc2x3::IfcAxis2Placement3D* v10_ConditionCoordinateSystem, ::Ifc2x3::IfcConnectionGeometry* v11_ConnectionConstraint);
    typedef IfcTemplatedEntityList< IfcRelConnectsWithEccentricity > list;
};
class IFC_PARSE_API IfcRelConnectsWithRealizingElements : public IfcRelConnectsElements {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcElement >::ptr RealizingElements() const;
    void setRealizingElements(IfcTemplatedEntityList< ::Ifc2x3::IfcElement >::ptr v);
    bool hasConnectionType() const;
    std::string ConnectionType() const;
    void setConnectionType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsWithRealizingElements (IfcEntityInstanceData* e);
    IfcRelConnectsWithRealizingElements (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc2x3::IfcElement* v6_RelatingElement, ::Ifc2x3::IfcElement* v7_RelatedElement, IfcTemplatedEntityList< ::Ifc2x3::IfcElement >::ptr v8_RealizingElements, boost::optional< std::string > v9_ConnectionType);
    typedef IfcTemplatedEntityList< IfcRelConnectsWithRealizingElements > list;
};
class IFC_PARSE_API IfcRelContainedInSpatialStructure : public IfcRelConnects {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcProduct >::ptr RelatedElements() const;
    void setRelatedElements(IfcTemplatedEntityList< ::Ifc2x3::IfcProduct >::ptr v);
    ::Ifc2x3::IfcSpatialStructureElement* RelatingStructure() const;
    void setRelatingStructure(::Ifc2x3::IfcSpatialStructureElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelContainedInSpatialStructure (IfcEntityInstanceData* e);
    IfcRelContainedInSpatialStructure (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcProduct >::ptr v5_RelatedElements, ::Ifc2x3::IfcSpatialStructureElement* v6_RelatingStructure);
    typedef IfcTemplatedEntityList< IfcRelContainedInSpatialStructure > list;
};
class IFC_PARSE_API IfcRelCoversBldgElements : public IfcRelConnects {
public:
    ::Ifc2x3::IfcElement* RelatingBuildingElement() const;
    void setRelatingBuildingElement(::Ifc2x3::IfcElement* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcCovering >::ptr RelatedCoverings() const;
    void setRelatedCoverings(IfcTemplatedEntityList< ::Ifc2x3::IfcCovering >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelCoversBldgElements (IfcEntityInstanceData* e);
    IfcRelCoversBldgElements (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcElement* v5_RelatingBuildingElement, IfcTemplatedEntityList< ::Ifc2x3::IfcCovering >::ptr v6_RelatedCoverings);
    typedef IfcTemplatedEntityList< IfcRelCoversBldgElements > list;
};
class IFC_PARSE_API IfcRelCoversSpaces : public IfcRelConnects {
public:
    ::Ifc2x3::IfcSpace* RelatedSpace() const;
    void setRelatedSpace(::Ifc2x3::IfcSpace* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcCovering >::ptr RelatedCoverings() const;
    void setRelatedCoverings(IfcTemplatedEntityList< ::Ifc2x3::IfcCovering >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelCoversSpaces (IfcEntityInstanceData* e);
    IfcRelCoversSpaces (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcSpace* v5_RelatedSpace, IfcTemplatedEntityList< ::Ifc2x3::IfcCovering >::ptr v6_RelatedCoverings);
    typedef IfcTemplatedEntityList< IfcRelCoversSpaces > list;
};
class IFC_PARSE_API IfcRelDecomposes : public IfcRelationship {
public:
    ::Ifc2x3::IfcObjectDefinition* RelatingObject() const;
    void setRelatingObject(::Ifc2x3::IfcObjectDefinition* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr RelatedObjects() const;
    void setRelatedObjects(IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelDecomposes (IfcEntityInstanceData* e);
    IfcRelDecomposes (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcObjectDefinition* v5_RelatingObject, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v6_RelatedObjects);
    typedef IfcTemplatedEntityList< IfcRelDecomposes > list;
};
class IFC_PARSE_API IfcRelDefines : public IfcRelationship {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcObject >::ptr RelatedObjects() const;
    void setRelatedObjects(IfcTemplatedEntityList< ::Ifc2x3::IfcObject >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelDefines (IfcEntityInstanceData* e);
    IfcRelDefines (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObject >::ptr v5_RelatedObjects);
    typedef IfcTemplatedEntityList< IfcRelDefines > list;
};
class IFC_PARSE_API IfcRelDefinesByProperties : public IfcRelDefines {
public:
    ::Ifc2x3::IfcPropertySetDefinition* RelatingPropertyDefinition() const;
    void setRelatingPropertyDefinition(::Ifc2x3::IfcPropertySetDefinition* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelDefinesByProperties (IfcEntityInstanceData* e);
    IfcRelDefinesByProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObject >::ptr v5_RelatedObjects, ::Ifc2x3::IfcPropertySetDefinition* v6_RelatingPropertyDefinition);
    typedef IfcTemplatedEntityList< IfcRelDefinesByProperties > list;
};
class IFC_PARSE_API IfcRelDefinesByType : public IfcRelDefines {
public:
    ::Ifc2x3::IfcTypeObject* RelatingType() const;
    void setRelatingType(::Ifc2x3::IfcTypeObject* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelDefinesByType (IfcEntityInstanceData* e);
    IfcRelDefinesByType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObject >::ptr v5_RelatedObjects, ::Ifc2x3::IfcTypeObject* v6_RelatingType);
    typedef IfcTemplatedEntityList< IfcRelDefinesByType > list;
};
class IFC_PARSE_API IfcRelFillsElement : public IfcRelConnects {
public:
    ::Ifc2x3::IfcOpeningElement* RelatingOpeningElement() const;
    void setRelatingOpeningElement(::Ifc2x3::IfcOpeningElement* v);
    ::Ifc2x3::IfcElement* RelatedBuildingElement() const;
    void setRelatedBuildingElement(::Ifc2x3::IfcElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelFillsElement (IfcEntityInstanceData* e);
    IfcRelFillsElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcOpeningElement* v5_RelatingOpeningElement, ::Ifc2x3::IfcElement* v6_RelatedBuildingElement);
    typedef IfcTemplatedEntityList< IfcRelFillsElement > list;
};
class IFC_PARSE_API IfcRelFlowControlElements : public IfcRelConnects {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcDistributionControlElement >::ptr RelatedControlElements() const;
    void setRelatedControlElements(IfcTemplatedEntityList< ::Ifc2x3::IfcDistributionControlElement >::ptr v);
    ::Ifc2x3::IfcDistributionFlowElement* RelatingFlowElement() const;
    void setRelatingFlowElement(::Ifc2x3::IfcDistributionFlowElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelFlowControlElements (IfcEntityInstanceData* e);
    IfcRelFlowControlElements (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcDistributionControlElement >::ptr v5_RelatedControlElements, ::Ifc2x3::IfcDistributionFlowElement* v6_RelatingFlowElement);
    typedef IfcTemplatedEntityList< IfcRelFlowControlElements > list;
};

class IFC_PARSE_API IfcRelInteractionRequirements : public IfcRelConnects {
public:
    bool hasDailyInteraction() const;
    double DailyInteraction() const;
    void setDailyInteraction(double v);
    bool hasImportanceRating() const;
    double ImportanceRating() const;
    void setImportanceRating(double v);
    bool hasLocationOfInteraction() const;
    ::Ifc2x3::IfcSpatialStructureElement* LocationOfInteraction() const;
    void setLocationOfInteraction(::Ifc2x3::IfcSpatialStructureElement* v);
    ::Ifc2x3::IfcSpaceProgram* RelatedSpaceProgram() const;
    void setRelatedSpaceProgram(::Ifc2x3::IfcSpaceProgram* v);
    ::Ifc2x3::IfcSpaceProgram* RelatingSpaceProgram() const;
    void setRelatingSpaceProgram(::Ifc2x3::IfcSpaceProgram* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelInteractionRequirements (IfcEntityInstanceData* e);
    IfcRelInteractionRequirements (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcSpatialStructureElement* v7_LocationOfInteraction, ::Ifc2x3::IfcSpaceProgram* v8_RelatedSpaceProgram, ::Ifc2x3::IfcSpaceProgram* v9_RelatingSpaceProgram);
    typedef IfcTemplatedEntityList< IfcRelInteractionRequirements > list;
};
class IFC_PARSE_API IfcRelNests : public IfcRelDecomposes {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelNests (IfcEntityInstanceData* e);
    IfcRelNests (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcObjectDefinition* v5_RelatingObject, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v6_RelatedObjects);
    typedef IfcTemplatedEntityList< IfcRelNests > list;
};

class IFC_PARSE_API IfcRelOccupiesSpaces : public IfcRelAssignsToActor {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelOccupiesSpaces (IfcEntityInstanceData* e);
    IfcRelOccupiesSpaces (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc2x3::IfcActor* v7_RelatingActor, ::Ifc2x3::IfcActorRole* v8_ActingRole);
    typedef IfcTemplatedEntityList< IfcRelOccupiesSpaces > list;
};

class IFC_PARSE_API IfcRelOverridesProperties : public IfcRelDefinesByProperties {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr OverridingProperties() const;
    void setOverridingProperties(IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelOverridesProperties (IfcEntityInstanceData* e);
    IfcRelOverridesProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObject >::ptr v5_RelatedObjects, ::Ifc2x3::IfcPropertySetDefinition* v6_RelatingPropertyDefinition, IfcTemplatedEntityList< ::Ifc2x3::IfcProperty >::ptr v7_OverridingProperties);
    typedef IfcTemplatedEntityList< IfcRelOverridesProperties > list;
};
class IFC_PARSE_API IfcRelProjectsElement : public IfcRelConnects {
public:
    ::Ifc2x3::IfcElement* RelatingElement() const;
    void setRelatingElement(::Ifc2x3::IfcElement* v);
    ::Ifc2x3::IfcFeatureElementAddition* RelatedFeatureElement() const;
    void setRelatedFeatureElement(::Ifc2x3::IfcFeatureElementAddition* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelProjectsElement (IfcEntityInstanceData* e);
    IfcRelProjectsElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcElement* v5_RelatingElement, ::Ifc2x3::IfcFeatureElementAddition* v6_RelatedFeatureElement);
    typedef IfcTemplatedEntityList< IfcRelProjectsElement > list;
};
class IFC_PARSE_API IfcRelReferencedInSpatialStructure : public IfcRelConnects {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcProduct >::ptr RelatedElements() const;
    void setRelatedElements(IfcTemplatedEntityList< ::Ifc2x3::IfcProduct >::ptr v);
    ::Ifc2x3::IfcSpatialStructureElement* RelatingStructure() const;
    void setRelatingStructure(::Ifc2x3::IfcSpatialStructureElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelReferencedInSpatialStructure (IfcEntityInstanceData* e);
    IfcRelReferencedInSpatialStructure (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcProduct >::ptr v5_RelatedElements, ::Ifc2x3::IfcSpatialStructureElement* v6_RelatingStructure);
    typedef IfcTemplatedEntityList< IfcRelReferencedInSpatialStructure > list;
};

class IFC_PARSE_API IfcRelSchedulesCostItems : public IfcRelAssignsToControl {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelSchedulesCostItems (IfcEntityInstanceData* e);
    IfcRelSchedulesCostItems (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc2x3::IfcControl* v7_RelatingControl);
    typedef IfcTemplatedEntityList< IfcRelSchedulesCostItems > list;
};
class IFC_PARSE_API IfcRelSequence : public IfcRelConnects {
public:
    ::Ifc2x3::IfcProcess* RelatingProcess() const;
    void setRelatingProcess(::Ifc2x3::IfcProcess* v);
    ::Ifc2x3::IfcProcess* RelatedProcess() const;
    void setRelatedProcess(::Ifc2x3::IfcProcess* v);
    double TimeLag() const;
    void setTimeLag(double v);
    ::Ifc2x3::IfcSequenceEnum::Value SequenceType() const;
    void setSequenceType(::Ifc2x3::IfcSequenceEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelSequence (IfcEntityInstanceData* e);
    IfcRelSequence (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcProcess* v5_RelatingProcess, ::Ifc2x3::IfcProcess* v6_RelatedProcess, double v7_TimeLag, ::Ifc2x3::IfcSequenceEnum::Value v8_SequenceType);
    typedef IfcTemplatedEntityList< IfcRelSequence > list;
};
class IFC_PARSE_API IfcRelServicesBuildings : public IfcRelConnects {
public:
    ::Ifc2x3::IfcSystem* RelatingSystem() const;
    void setRelatingSystem(::Ifc2x3::IfcSystem* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcSpatialStructureElement >::ptr RelatedBuildings() const;
    void setRelatedBuildings(IfcTemplatedEntityList< ::Ifc2x3::IfcSpatialStructureElement >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelServicesBuildings (IfcEntityInstanceData* e);
    IfcRelServicesBuildings (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcSystem* v5_RelatingSystem, IfcTemplatedEntityList< ::Ifc2x3::IfcSpatialStructureElement >::ptr v6_RelatedBuildings);
    typedef IfcTemplatedEntityList< IfcRelServicesBuildings > list;
};
class IFC_PARSE_API IfcRelSpaceBoundary : public IfcRelConnects {
public:
    ::Ifc2x3::IfcSpace* RelatingSpace() const;
    void setRelatingSpace(::Ifc2x3::IfcSpace* v);
    bool hasRelatedBuildingElement() const;
    ::Ifc2x3::IfcElement* RelatedBuildingElement() const;
    void setRelatedBuildingElement(::Ifc2x3::IfcElement* v);
    bool hasConnectionGeometry() const;
    ::Ifc2x3::IfcConnectionGeometry* ConnectionGeometry() const;
    void setConnectionGeometry(::Ifc2x3::IfcConnectionGeometry* v);
    ::Ifc2x3::IfcPhysicalOrVirtualEnum::Value PhysicalOrVirtualBoundary() const;
    void setPhysicalOrVirtualBoundary(::Ifc2x3::IfcPhysicalOrVirtualEnum::Value v);
    ::Ifc2x3::IfcInternalOrExternalEnum::Value InternalOrExternalBoundary() const;
    void setInternalOrExternalBoundary(::Ifc2x3::IfcInternalOrExternalEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelSpaceBoundary (IfcEntityInstanceData* e);
    IfcRelSpaceBoundary (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcSpace* v5_RelatingSpace, ::Ifc2x3::IfcElement* v6_RelatedBuildingElement, ::Ifc2x3::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc2x3::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc2x3::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary);
    typedef IfcTemplatedEntityList< IfcRelSpaceBoundary > list;
};
class IFC_PARSE_API IfcRelVoidsElement : public IfcRelConnects {
public:
    ::Ifc2x3::IfcElement* RelatingBuildingElement() const;
    void setRelatingBuildingElement(::Ifc2x3::IfcElement* v);
    ::Ifc2x3::IfcFeatureElementSubtraction* RelatedOpeningElement() const;
    void setRelatedOpeningElement(::Ifc2x3::IfcFeatureElementSubtraction* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelVoidsElement (IfcEntityInstanceData* e);
    IfcRelVoidsElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcElement* v5_RelatingBuildingElement, ::Ifc2x3::IfcFeatureElementSubtraction* v6_RelatedOpeningElement);
    typedef IfcTemplatedEntityList< IfcRelVoidsElement > list;
};
class IFC_PARSE_API IfcResource : public IfcObject {
public:
        IfcTemplatedEntityList< IfcRelAssignsToResource >::ptr ResourceOf() const; // INVERSE IfcRelAssignsToResource::RelatingResource
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcResource (IfcEntityInstanceData* e);
    IfcResource (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcResource > list;
};
class IFC_PARSE_API IfcRevolvedAreaSolid : public IfcSweptAreaSolid {
public:
    ::Ifc2x3::IfcAxis1Placement* Axis() const;
    void setAxis(::Ifc2x3::IfcAxis1Placement* v);
    double Angle() const;
    void setAngle(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRevolvedAreaSolid (IfcEntityInstanceData* e);
    IfcRevolvedAreaSolid (::Ifc2x3::IfcProfileDef* v1_SweptArea, ::Ifc2x3::IfcAxis2Placement3D* v2_Position, ::Ifc2x3::IfcAxis1Placement* v3_Axis, double v4_Angle);
    typedef IfcTemplatedEntityList< IfcRevolvedAreaSolid > list;
};
class IFC_PARSE_API IfcRightCircularCone : public IfcCsgPrimitive3D {
public:
    double Height() const;
    void setHeight(double v);
    double BottomRadius() const;
    void setBottomRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRightCircularCone (IfcEntityInstanceData* e);
    IfcRightCircularCone (::Ifc2x3::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_BottomRadius);
    typedef IfcTemplatedEntityList< IfcRightCircularCone > list;
};
class IFC_PARSE_API IfcRightCircularCylinder : public IfcCsgPrimitive3D {
public:
    double Height() const;
    void setHeight(double v);
    double Radius() const;
    void setRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRightCircularCylinder (IfcEntityInstanceData* e);
    IfcRightCircularCylinder (::Ifc2x3::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_Radius);
    typedef IfcTemplatedEntityList< IfcRightCircularCylinder > list;
};
class IFC_PARSE_API IfcSpatialStructureElement : public IfcProduct {
public:
    bool hasLongName() const;
    std::string LongName() const;
    void setLongName(std::string v);
    ::Ifc2x3::IfcElementCompositionEnum::Value CompositionType() const;
    void setCompositionType(::Ifc2x3::IfcElementCompositionEnum::Value v);
        IfcTemplatedEntityList< IfcRelReferencedInSpatialStructure >::ptr ReferencesElements() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatingStructure
    IfcTemplatedEntityList< IfcRelServicesBuildings >::ptr ServicedBySystems() const; // INVERSE IfcRelServicesBuildings::RelatedBuildings
    IfcTemplatedEntityList< IfcRelContainedInSpatialStructure >::ptr ContainsElements() const; // INVERSE IfcRelContainedInSpatialStructure::RelatingStructure
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpatialStructureElement (IfcEntityInstanceData* e);
    IfcSpatialStructureElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, ::Ifc2x3::IfcElementCompositionEnum::Value v9_CompositionType);
    typedef IfcTemplatedEntityList< IfcSpatialStructureElement > list;
};
class IFC_PARSE_API IfcSpatialStructureElementType : public IfcElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpatialStructureElementType (IfcEntityInstanceData* e);
    IfcSpatialStructureElementType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcSpatialStructureElementType > list;
};
class IFC_PARSE_API IfcSphere : public IfcCsgPrimitive3D {
public:
    double Radius() const;
    void setRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSphere (IfcEntityInstanceData* e);
    IfcSphere (::Ifc2x3::IfcAxis2Placement3D* v1_Position, double v2_Radius);
    typedef IfcTemplatedEntityList< IfcSphere > list;
};
class IFC_PARSE_API IfcStructuralActivity : public IfcProduct {
public:
    ::Ifc2x3::IfcStructuralLoad* AppliedLoad() const;
    void setAppliedLoad(::Ifc2x3::IfcStructuralLoad* v);
    ::Ifc2x3::IfcGlobalOrLocalEnum::Value GlobalOrLocal() const;
    void setGlobalOrLocal(::Ifc2x3::IfcGlobalOrLocalEnum::Value v);
        IfcTemplatedEntityList< IfcRelConnectsStructuralActivity >::ptr AssignedToStructuralItem() const; // INVERSE IfcRelConnectsStructuralActivity::RelatedStructuralActivity
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralActivity (IfcEntityInstanceData* e);
    IfcStructuralActivity (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralLoad* v8_AppliedLoad, ::Ifc2x3::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal);
    typedef IfcTemplatedEntityList< IfcStructuralActivity > list;
};
class IFC_PARSE_API IfcStructuralItem : public IfcProduct {
public:
        IfcTemplatedEntityList< IfcRelConnectsStructuralActivity >::ptr AssignedStructuralActivity() const; // INVERSE IfcRelConnectsStructuralActivity::RelatingElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralItem (IfcEntityInstanceData* e);
    IfcStructuralItem (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation);
    typedef IfcTemplatedEntityList< IfcStructuralItem > list;
};
class IFC_PARSE_API IfcStructuralMember : public IfcStructuralItem {
public:
        IfcTemplatedEntityList< IfcRelConnectsStructuralElement >::ptr ReferencesElement() const; // INVERSE IfcRelConnectsStructuralElement::RelatedStructuralMember
    IfcTemplatedEntityList< IfcRelConnectsStructuralMember >::ptr ConnectedBy() const; // INVERSE IfcRelConnectsStructuralMember::RelatingStructuralMember
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralMember (IfcEntityInstanceData* e);
    IfcStructuralMember (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation);
    typedef IfcTemplatedEntityList< IfcStructuralMember > list;
};
class IFC_PARSE_API IfcStructuralReaction : public IfcStructuralActivity {
public:
        IfcTemplatedEntityList< IfcStructuralAction >::ptr Causes() const; // INVERSE IfcStructuralAction::CausedBy
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralReaction (IfcEntityInstanceData* e);
    IfcStructuralReaction (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralLoad* v8_AppliedLoad, ::Ifc2x3::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal);
    typedef IfcTemplatedEntityList< IfcStructuralReaction > list;
};
class IFC_PARSE_API IfcStructuralSurfaceMember : public IfcStructuralMember {
public:
    ::Ifc2x3::IfcStructuralSurfaceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcStructuralSurfaceTypeEnum::Value v);
    bool hasThickness() const;
    double Thickness() const;
    void setThickness(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralSurfaceMember (IfcEntityInstanceData* e);
    IfcStructuralSurfaceMember (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralSurfaceTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness);
    typedef IfcTemplatedEntityList< IfcStructuralSurfaceMember > list;
};
class IFC_PARSE_API IfcStructuralSurfaceMemberVarying : public IfcStructuralSurfaceMember {
public:
    std::vector< double > /*[2:?]*/ SubsequentThickness() const;
    void setSubsequentThickness(std::vector< double > /*[2:?]*/ v);
    ::Ifc2x3::IfcShapeAspect* VaryingThicknessLocation() const;
    void setVaryingThicknessLocation(::Ifc2x3::IfcShapeAspect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralSurfaceMemberVarying (IfcEntityInstanceData* e);
    IfcStructuralSurfaceMemberVarying (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralSurfaceTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness, std::vector< double > /*[2:?]*/ v10_SubsequentThickness, ::Ifc2x3::IfcShapeAspect* v11_VaryingThicknessLocation);
    typedef IfcTemplatedEntityList< IfcStructuralSurfaceMemberVarying > list;
};

class IFC_PARSE_API IfcStructuredDimensionCallout : public IfcDraughtingCallout {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuredDimensionCallout (IfcEntityInstanceData* e);
    IfcStructuredDimensionCallout (IfcEntityList::ptr v1_Contents);
    typedef IfcTemplatedEntityList< IfcStructuredDimensionCallout > list;
};
class IFC_PARSE_API IfcSurfaceCurveSweptAreaSolid : public IfcSweptAreaSolid {
public:
    ::Ifc2x3::IfcCurve* Directrix() const;
    void setDirectrix(::Ifc2x3::IfcCurve* v);
    double StartParam() const;
    void setStartParam(double v);
    double EndParam() const;
    void setEndParam(double v);
    ::Ifc2x3::IfcSurface* ReferenceSurface() const;
    void setReferenceSurface(::Ifc2x3::IfcSurface* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceCurveSweptAreaSolid (IfcEntityInstanceData* e);
    IfcSurfaceCurveSweptAreaSolid (::Ifc2x3::IfcProfileDef* v1_SweptArea, ::Ifc2x3::IfcAxis2Placement3D* v2_Position, ::Ifc2x3::IfcCurve* v3_Directrix, double v4_StartParam, double v5_EndParam, ::Ifc2x3::IfcSurface* v6_ReferenceSurface);
    typedef IfcTemplatedEntityList< IfcSurfaceCurveSweptAreaSolid > list;
};
class IFC_PARSE_API IfcSurfaceOfLinearExtrusion : public IfcSweptSurface {
public:
    ::Ifc2x3::IfcDirection* ExtrudedDirection() const;
    void setExtrudedDirection(::Ifc2x3::IfcDirection* v);
    double Depth() const;
    void setDepth(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceOfLinearExtrusion (IfcEntityInstanceData* e);
    IfcSurfaceOfLinearExtrusion (::Ifc2x3::IfcProfileDef* v1_SweptCurve, ::Ifc2x3::IfcAxis2Placement3D* v2_Position, ::Ifc2x3::IfcDirection* v3_ExtrudedDirection, double v4_Depth);
    typedef IfcTemplatedEntityList< IfcSurfaceOfLinearExtrusion > list;
};
class IFC_PARSE_API IfcSurfaceOfRevolution : public IfcSweptSurface {
public:
    ::Ifc2x3::IfcAxis1Placement* AxisPosition() const;
    void setAxisPosition(::Ifc2x3::IfcAxis1Placement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceOfRevolution (IfcEntityInstanceData* e);
    IfcSurfaceOfRevolution (::Ifc2x3::IfcProfileDef* v1_SweptCurve, ::Ifc2x3::IfcAxis2Placement3D* v2_Position, ::Ifc2x3::IfcAxis1Placement* v3_AxisPosition);
    typedef IfcTemplatedEntityList< IfcSurfaceOfRevolution > list;
};
class IFC_PARSE_API IfcSystemFurnitureElementType : public IfcFurnishingElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSystemFurnitureElementType (IfcEntityInstanceData* e);
    IfcSystemFurnitureElementType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcSystemFurnitureElementType > list;
};
class IFC_PARSE_API IfcTask : public IfcProcess {
public:
    std::string TaskId() const;
    void setTaskId(std::string v);
    bool hasStatus() const;
    std::string Status() const;
    void setStatus(std::string v);
    bool hasWorkMethod() const;
    std::string WorkMethod() const;
    void setWorkMethod(std::string v);
    bool IsMilestone() const;
    void setIsMilestone(bool v);
    bool hasPriority() const;
    int Priority() const;
    void setPriority(int v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTask (IfcEntityInstanceData* e);
    IfcTask (std::string v1_GlobalId, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcTask > list;
};
class IFC_PARSE_API IfcTransportElementType : public IfcElementType {
public:
    ::Ifc2x3::IfcTransportElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcTransportElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTransportElementType (IfcEntityInstanceData* e);
    IfcTransportElementType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcTransportElementTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTransportElementType > list;
};
class IFC_PARSE_API IfcActor : public IfcObject {
public:
    ::Ifc2x3::IfcActorSelect* TheActor() const;
    void setTheActor(::Ifc2x3::IfcActorSelect* v);
        IfcTemplatedEntityList< IfcRelAssignsToActor >::ptr IsActingUpon() const; // INVERSE IfcRelAssignsToActor::RelatingActor
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcActor (IfcEntityInstanceData* e);
    IfcActor (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcActorSelect* v6_TheActor);
    typedef IfcTemplatedEntityList< IfcActor > list;
};
class IFC_PARSE_API IfcAnnotation : public IfcProduct {
public:
        IfcTemplatedEntityList< IfcRelContainedInSpatialStructure >::ptr ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAnnotation (IfcEntityInstanceData* e);
    IfcAnnotation (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation);
    typedef IfcTemplatedEntityList< IfcAnnotation > list;
};
class IFC_PARSE_API IfcAsymmetricIShapeProfileDef : public IfcIShapeProfileDef {
public:
    double TopFlangeWidth() const;
    void setTopFlangeWidth(double v);
    bool hasTopFlangeThickness() const;
    double TopFlangeThickness() const;
    void setTopFlangeThickness(double v);
    bool hasTopFlangeFilletRadius() const;
    double TopFlangeFilletRadius() const;
    void setTopFlangeFilletRadius(double v);
    bool hasCentreOfGravityInY() const;
    double CentreOfGravityInY() const;
    void setCentreOfGravityInY(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAsymmetricIShapeProfileDef (IfcEntityInstanceData* e);
    IfcAsymmetricIShapeProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcAsymmetricIShapeProfileDef > list;
};
class IFC_PARSE_API IfcBlock : public IfcCsgPrimitive3D {
public:
    double XLength() const;
    void setXLength(double v);
    double YLength() const;
    void setYLength(double v);
    double ZLength() const;
    void setZLength(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBlock (IfcEntityInstanceData* e);
    IfcBlock (::Ifc2x3::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_ZLength);
    typedef IfcTemplatedEntityList< IfcBlock > list;
};
class IFC_PARSE_API IfcBooleanClippingResult : public IfcBooleanResult {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBooleanClippingResult (IfcEntityInstanceData* e);
    IfcBooleanClippingResult (::Ifc2x3::IfcBooleanOperator::Value v1_Operator, ::Ifc2x3::IfcBooleanOperand* v2_FirstOperand, ::Ifc2x3::IfcBooleanOperand* v3_SecondOperand);
    typedef IfcTemplatedEntityList< IfcBooleanClippingResult > list;
};
class IFC_PARSE_API IfcBoundedCurve : public IfcCurve {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundedCurve (IfcEntityInstanceData* e);
    IfcBoundedCurve ();
    typedef IfcTemplatedEntityList< IfcBoundedCurve > list;
};
class IFC_PARSE_API IfcBuilding : public IfcSpatialStructureElement {
public:
    bool hasElevationOfRefHeight() const;
    double ElevationOfRefHeight() const;
    void setElevationOfRefHeight(double v);
    bool hasElevationOfTerrain() const;
    double ElevationOfTerrain() const;
    void setElevationOfTerrain(double v);
    bool hasBuildingAddress() const;
    ::Ifc2x3::IfcPostalAddress* BuildingAddress() const;
    void setBuildingAddress(::Ifc2x3::IfcPostalAddress* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuilding (IfcEntityInstanceData* e);
    IfcBuilding (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, ::Ifc2x3::IfcElementCompositionEnum::Value v9_CompositionType, boost::optional< double > v10_ElevationOfRefHeight, boost::optional< double > v11_ElevationOfTerrain, ::Ifc2x3::IfcPostalAddress* v12_BuildingAddress);
    typedef IfcTemplatedEntityList< IfcBuilding > list;
};
class IFC_PARSE_API IfcBuildingElementType : public IfcElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElementType (IfcEntityInstanceData* e);
    IfcBuildingElementType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcBuildingElementType > list;
};
class IFC_PARSE_API IfcBuildingStorey : public IfcSpatialStructureElement {
public:
    bool hasElevation() const;
    double Elevation() const;
    void setElevation(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingStorey (IfcEntityInstanceData* e);
    IfcBuildingStorey (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, ::Ifc2x3::IfcElementCompositionEnum::Value v9_CompositionType, boost::optional< double > v10_Elevation);
    typedef IfcTemplatedEntityList< IfcBuildingStorey > list;
};
class IFC_PARSE_API IfcCircleHollowProfileDef : public IfcCircleProfileDef {
public:
    double WallThickness() const;
    void setWallThickness(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCircleHollowProfileDef (IfcEntityInstanceData* e);
    IfcCircleHollowProfileDef (::Ifc2x3::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc2x3::IfcAxis2Placement2D* v3_Position, double v4_Radius, double v5_WallThickness);
    typedef IfcTemplatedEntityList< IfcCircleHollowProfileDef > list;
};
class IFC_PARSE_API IfcColumnType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcColumnTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcColumnTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcColumnType (IfcEntityInstanceData* e);
    IfcColumnType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcColumnTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcColumnType > list;
};
class IFC_PARSE_API IfcCompositeCurve : public IfcBoundedCurve {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcCompositeCurveSegment >::ptr Segments() const;
    void setSegments(IfcTemplatedEntityList< ::Ifc2x3::IfcCompositeCurveSegment >::ptr v);
    bool SelfIntersect() const;
    void setSelfIntersect(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCompositeCurve (IfcEntityInstanceData* e);
    IfcCompositeCurve (IfcTemplatedEntityList< ::Ifc2x3::IfcCompositeCurveSegment >::ptr v1_Segments, bool v2_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcCompositeCurve > list;
};
class IFC_PARSE_API IfcConic : public IfcCurve {
public:
    ::Ifc2x3::IfcAxis2Placement* Position() const;
    void setPosition(::Ifc2x3::IfcAxis2Placement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConic (IfcEntityInstanceData* e);
    IfcConic (::Ifc2x3::IfcAxis2Placement* v1_Position);
    typedef IfcTemplatedEntityList< IfcConic > list;
};
class IFC_PARSE_API IfcConstructionResource : public IfcResource {
public:
    bool hasResourceIdentifier() const;
    std::string ResourceIdentifier() const;
    void setResourceIdentifier(std::string v);
    bool hasResourceGroup() const;
    std::string ResourceGroup() const;
    void setResourceGroup(std::string v);
    bool hasResourceConsumption() const;
    ::Ifc2x3::IfcResourceConsumptionEnum::Value ResourceConsumption() const;
    void setResourceConsumption(::Ifc2x3::IfcResourceConsumptionEnum::Value v);
    bool hasBaseQuantity() const;
    ::Ifc2x3::IfcMeasureWithUnit* BaseQuantity() const;
    void setBaseQuantity(::Ifc2x3::IfcMeasureWithUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionResource (IfcEntityInstanceData* e);
    IfcConstructionResource (std::string v1_GlobalId, ::Ifc2x3::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< ::Ifc2x3::IfcResourceConsumptionEnum::Value > v8_ResourceConsumption, ::Ifc2x3::IfcMeasureWithUnit* v9_BaseQuantity);
    typedef IfcTemplatedEntityList< IfcConstructionResource > list;
};
class IFC_PARSE_API IfcControl : public IfcObject {
public:
        IfcTemplatedEntityList< IfcRelAssignsToControl >::ptr Controls() const; // INVERSE IfcRelAssignsToControl::RelatingControl
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcControl (IfcEntityInstanceData* e);
    IfcControl (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcControl > list;
};
class IFC_PARSE_API IfcCostItem : public IfcControl {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCostItem (IfcEntityInstanceData* e);
    IfcCostItem (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcCostItem > list;
};
class IFC_PARSE_API IfcCostSchedule : public IfcControl {
public:
    bool hasSubmittedBy() const;
    ::Ifc2x3::IfcActorSelect* SubmittedBy() const;
    void setSubmittedBy(::Ifc2x3::IfcActorSelect* v);
    bool hasPreparedBy() const;
    ::Ifc2x3::IfcActorSelect* PreparedBy() const;
    void setPreparedBy(::Ifc2x3::IfcActorSelect* v);
    bool hasSubmittedOn() const;
    ::Ifc2x3::IfcDateTimeSelect* SubmittedOn() const;
    void setSubmittedOn(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasStatus() const;
    std::string Status() const;
    void setStatus(std::string v);
    bool hasTargetUsers() const;
    IfcEntityList::ptr TargetUsers() const;
    void setTargetUsers(IfcEntityList::ptr v);
    bool hasUpdateDate() const;
    ::Ifc2x3::IfcDateTimeSelect* UpdateDate() const;
    void setUpdateDate(::Ifc2x3::IfcDateTimeSelect* v);
    std::string ID() const;
    void setID(std::string v);
    ::Ifc2x3::IfcCostScheduleTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCostScheduleTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCostSchedule (IfcEntityInstanceData* e);
    IfcCostSchedule (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcActorSelect* v6_SubmittedBy, ::Ifc2x3::IfcActorSelect* v7_PreparedBy, ::Ifc2x3::IfcDateTimeSelect* v8_SubmittedOn, boost::optional< std::string > v9_Status, boost::optional< IfcEntityList::ptr > v10_TargetUsers, ::Ifc2x3::IfcDateTimeSelect* v11_UpdateDate, std::string v12_ID, ::Ifc2x3::IfcCostScheduleTypeEnum::Value v13_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCostSchedule > list;
};
class IFC_PARSE_API IfcCoveringType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcCoveringTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCoveringTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCoveringType (IfcEntityInstanceData* e);
    IfcCoveringType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcCoveringTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCoveringType > list;
};
class IFC_PARSE_API IfcCrewResource : public IfcConstructionResource {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCrewResource (IfcEntityInstanceData* e);
    IfcCrewResource (std::string v1_GlobalId, ::Ifc2x3::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< ::Ifc2x3::IfcResourceConsumptionEnum::Value > v8_ResourceConsumption, ::Ifc2x3::IfcMeasureWithUnit* v9_BaseQuantity);
    typedef IfcTemplatedEntityList< IfcCrewResource > list;
};
class IFC_PARSE_API IfcCurtainWallType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcCurtainWallTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCurtainWallTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurtainWallType (IfcEntityInstanceData* e);
    IfcCurtainWallType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcCurtainWallTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCurtainWallType > list;
};

class IFC_PARSE_API IfcDimensionCurveDirectedCallout : public IfcDraughtingCallout {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDimensionCurveDirectedCallout (IfcEntityInstanceData* e);
    IfcDimensionCurveDirectedCallout (IfcEntityList::ptr v1_Contents);
    typedef IfcTemplatedEntityList< IfcDimensionCurveDirectedCallout > list;
};
class IFC_PARSE_API IfcDistributionElementType : public IfcElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionElementType (IfcEntityInstanceData* e);
    IfcDistributionElementType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcDistributionElementType > list;
};
class IFC_PARSE_API IfcDistributionFlowElementType : public IfcDistributionElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionFlowElementType (IfcEntityInstanceData* e);
    IfcDistributionFlowElementType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcDistributionFlowElementType > list;
};

class IFC_PARSE_API IfcElectricalBaseProperties : public IfcEnergyProperties {
public:
    bool hasElectricCurrentType() const;
    ::Ifc2x3::IfcElectricCurrentEnum::Value ElectricCurrentType() const;
    void setElectricCurrentType(::Ifc2x3::IfcElectricCurrentEnum::Value v);
    double InputVoltage() const;
    void setInputVoltage(double v);
    double InputFrequency() const;
    void setInputFrequency(double v);
    bool hasFullLoadCurrent() const;
    double FullLoadCurrent() const;
    void setFullLoadCurrent(double v);
    bool hasMinimumCircuitCurrent() const;
    double MinimumCircuitCurrent() const;
    void setMinimumCircuitCurrent(double v);
    bool hasMaximumPowerInput() const;
    double MaximumPowerInput() const;
    void setMaximumPowerInput(double v);
    bool hasRatedPowerInput() const;
    double RatedPowerInput() const;
    void setRatedPowerInput(double v);
    int InputPhase() const;
    void setInputPhase(int v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricalBaseProperties (IfcEntityInstanceData* e);
    IfcElectricalBaseProperties (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc2x3::IfcEnergySequenceEnum::Value > v5_EnergySequence, boost::optional< std::string > v6_UserDefinedEnergySequence, boost::optional< ::Ifc2x3::IfcElectricCurrentEnum::Value > 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);
    typedef IfcTemplatedEntityList< IfcElectricalBaseProperties > list;
};
class IFC_PARSE_API IfcElement : public IfcProduct {
public:
    bool hasTag() const;
    std::string Tag() const;
    void setTag(std::string v);
        IfcTemplatedEntityList< IfcRelConnectsStructuralElement >::ptr HasStructuralMember() const; // INVERSE IfcRelConnectsStructuralElement::RelatingElement
    IfcTemplatedEntityList< IfcRelFillsElement >::ptr FillsVoids() const; // INVERSE IfcRelFillsElement::RelatedBuildingElement
    IfcTemplatedEntityList< IfcRelConnectsElements >::ptr ConnectedTo() const; // INVERSE IfcRelConnectsElements::RelatingElement
    IfcTemplatedEntityList< IfcRelCoversBldgElements >::ptr HasCoverings() const; // INVERSE IfcRelCoversBldgElements::RelatingBuildingElement
    IfcTemplatedEntityList< IfcRelProjectsElement >::ptr HasProjections() const; // INVERSE IfcRelProjectsElement::RelatingElement
    IfcTemplatedEntityList< IfcRelReferencedInSpatialStructure >::ptr ReferencedInStructures() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatedElements
    IfcTemplatedEntityList< IfcRelConnectsPortToElement >::ptr HasPorts() const; // INVERSE IfcRelConnectsPortToElement::RelatedElement
    IfcTemplatedEntityList< IfcRelVoidsElement >::ptr HasOpenings() const; // INVERSE IfcRelVoidsElement::RelatingBuildingElement
    IfcTemplatedEntityList< IfcRelConnectsWithRealizingElements >::ptr IsConnectionRealization() const; // INVERSE IfcRelConnectsWithRealizingElements::RealizingElements
    IfcTemplatedEntityList< IfcRelSpaceBoundary >::ptr ProvidesBoundaries() const; // INVERSE IfcRelSpaceBoundary::RelatedBuildingElement
    IfcTemplatedEntityList< IfcRelConnectsElements >::ptr ConnectedFrom() const; // INVERSE IfcRelConnectsElements::RelatedElement
    IfcTemplatedEntityList< IfcRelContainedInSpatialStructure >::ptr ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElement (IfcEntityInstanceData* e);
    IfcElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcElement > list;
};
class IFC_PARSE_API IfcElementAssembly : public IfcElement {
public:
    bool hasAssemblyPlace() const;
    ::Ifc2x3::IfcAssemblyPlaceEnum::Value AssemblyPlace() const;
    void setAssemblyPlace(::Ifc2x3::IfcAssemblyPlaceEnum::Value v);
    ::Ifc2x3::IfcElementAssemblyTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcElementAssemblyTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementAssembly (IfcEntityInstanceData* e);
    IfcElementAssembly (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc2x3::IfcAssemblyPlaceEnum::Value > v9_AssemblyPlace, ::Ifc2x3::IfcElementAssemblyTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElementAssembly > list;
};
class IFC_PARSE_API IfcElementComponent : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementComponent (IfcEntityInstanceData* e);
    IfcElementComponent (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcElementComponent > list;
};
class IFC_PARSE_API IfcElementComponentType : public IfcElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementComponentType (IfcEntityInstanceData* e);
    IfcElementComponentType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcElementComponentType > list;
};
class IFC_PARSE_API IfcEllipse : public IfcConic {
public:
    double SemiAxis1() const;
    void setSemiAxis1(double v);
    double SemiAxis2() const;
    void setSemiAxis2(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEllipse (IfcEntityInstanceData* e);
    IfcEllipse (::Ifc2x3::IfcAxis2Placement* v1_Position, double v2_SemiAxis1, double v3_SemiAxis2);
    typedef IfcTemplatedEntityList< IfcEllipse > list;
};
class IFC_PARSE_API IfcEnergyConversionDeviceType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEnergyConversionDeviceType (IfcEntityInstanceData* e);
    IfcEnergyConversionDeviceType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcEnergyConversionDeviceType > list;
};

class IFC_PARSE_API IfcEquipmentElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEquipmentElement (IfcEntityInstanceData* e);
    IfcEquipmentElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcEquipmentElement > list;
};

class IFC_PARSE_API IfcEquipmentStandard : public IfcControl {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEquipmentStandard (IfcEntityInstanceData* e);
    IfcEquipmentStandard (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcEquipmentStandard > list;
};
class IFC_PARSE_API IfcEvaporativeCoolerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcEvaporativeCoolerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcEvaporativeCoolerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEvaporativeCoolerType (IfcEntityInstanceData* e);
    IfcEvaporativeCoolerType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcEvaporativeCoolerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcEvaporativeCoolerType > list;
};
class IFC_PARSE_API IfcEvaporatorType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcEvaporatorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcEvaporatorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEvaporatorType (IfcEntityInstanceData* e);
    IfcEvaporatorType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcEvaporatorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcEvaporatorType > list;
};
class IFC_PARSE_API IfcFacetedBrep : public IfcManifoldSolidBrep {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFacetedBrep (IfcEntityInstanceData* e);
    IfcFacetedBrep (::Ifc2x3::IfcClosedShell* v1_Outer);
    typedef IfcTemplatedEntityList< IfcFacetedBrep > list;
};
class IFC_PARSE_API IfcFacetedBrepWithVoids : public IfcManifoldSolidBrep {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcClosedShell >::ptr Voids() const;
    void setVoids(IfcTemplatedEntityList< ::Ifc2x3::IfcClosedShell >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFacetedBrepWithVoids (IfcEntityInstanceData* e);
    IfcFacetedBrepWithVoids (::Ifc2x3::IfcClosedShell* v1_Outer, IfcTemplatedEntityList< ::Ifc2x3::IfcClosedShell >::ptr v2_Voids);
    typedef IfcTemplatedEntityList< IfcFacetedBrepWithVoids > list;
};
class IFC_PARSE_API IfcFastener : public IfcElementComponent {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFastener (IfcEntityInstanceData* e);
    IfcFastener (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFastener > list;
};
class IFC_PARSE_API IfcFastenerType : public IfcElementComponentType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFastenerType (IfcEntityInstanceData* e);
    IfcFastenerType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFastenerType > list;
};
class IFC_PARSE_API IfcFeatureElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFeatureElement (IfcEntityInstanceData* e);
    IfcFeatureElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFeatureElement > list;
};
class IFC_PARSE_API IfcFeatureElementAddition : public IfcFeatureElement {
public:
        IfcTemplatedEntityList< IfcRelProjectsElement >::ptr ProjectsElements() const; // INVERSE IfcRelProjectsElement::RelatedFeatureElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFeatureElementAddition (IfcEntityInstanceData* e);
    IfcFeatureElementAddition (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFeatureElementAddition > list;
};
class IFC_PARSE_API IfcFeatureElementSubtraction : public IfcFeatureElement {
public:
        IfcTemplatedEntityList< IfcRelVoidsElement >::ptr VoidsElements() const; // INVERSE IfcRelVoidsElement::RelatedOpeningElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFeatureElementSubtraction (IfcEntityInstanceData* e);
    IfcFeatureElementSubtraction (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFeatureElementSubtraction > list;
};
class IFC_PARSE_API IfcFlowControllerType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowControllerType (IfcEntityInstanceData* e);
    IfcFlowControllerType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowControllerType > list;
};
class IFC_PARSE_API IfcFlowFittingType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowFittingType (IfcEntityInstanceData* e);
    IfcFlowFittingType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowFittingType > list;
};
class IFC_PARSE_API IfcFlowMeterType : public IfcFlowControllerType {
public:
    ::Ifc2x3::IfcFlowMeterTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcFlowMeterTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowMeterType (IfcEntityInstanceData* e);
    IfcFlowMeterType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcFlowMeterTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFlowMeterType > list;
};
class IFC_PARSE_API IfcFlowMovingDeviceType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowMovingDeviceType (IfcEntityInstanceData* e);
    IfcFlowMovingDeviceType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowMovingDeviceType > list;
};
class IFC_PARSE_API IfcFlowSegmentType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowSegmentType (IfcEntityInstanceData* e);
    IfcFlowSegmentType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowSegmentType > list;
};
class IFC_PARSE_API IfcFlowStorageDeviceType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowStorageDeviceType (IfcEntityInstanceData* e);
    IfcFlowStorageDeviceType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowStorageDeviceType > list;
};
class IFC_PARSE_API IfcFlowTerminalType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowTerminalType (IfcEntityInstanceData* e);
    IfcFlowTerminalType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowTerminalType > list;
};
class IFC_PARSE_API IfcFlowTreatmentDeviceType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowTreatmentDeviceType (IfcEntityInstanceData* e);
    IfcFlowTreatmentDeviceType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowTreatmentDeviceType > list;
};
class IFC_PARSE_API IfcFurnishingElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFurnishingElement (IfcEntityInstanceData* e);
    IfcFurnishingElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFurnishingElement > list;
};

class IFC_PARSE_API IfcFurnitureStandard : public IfcControl {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFurnitureStandard (IfcEntityInstanceData* e);
    IfcFurnitureStandard (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcFurnitureStandard > list;
};

class IFC_PARSE_API IfcGasTerminalType : public IfcFlowTerminalType {
public:
    ::Ifc2x3::IfcGasTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcGasTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGasTerminalType (IfcEntityInstanceData* e);
    IfcGasTerminalType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcGasTerminalTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcGasTerminalType > list;
};
class IFC_PARSE_API IfcGrid : public IfcProduct {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr UAxes() const;
    void setUAxes(IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr VAxes() const;
    void setVAxes(IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr v);
    bool hasWAxes() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr WAxes() const;
    void setWAxes(IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr v);
        IfcTemplatedEntityList< IfcRelContainedInSpatialStructure >::ptr ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGrid (IfcEntityInstanceData* e);
    IfcGrid (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr v8_UAxes, IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr v9_VAxes, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcGridAxis >::ptr > v10_WAxes);
    typedef IfcTemplatedEntityList< IfcGrid > list;
};
class IFC_PARSE_API IfcGroup : public IfcObject {
public:
        IfcTemplatedEntityList< IfcRelAssignsToGroup >::ptr IsGroupedBy() const; // INVERSE IfcRelAssignsToGroup::RelatingGroup
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGroup (IfcEntityInstanceData* e);
    IfcGroup (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcGroup > list;
};
class IFC_PARSE_API IfcHeatExchangerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcHeatExchangerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcHeatExchangerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcHeatExchangerType (IfcEntityInstanceData* e);
    IfcHeatExchangerType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcHeatExchangerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcHeatExchangerType > list;
};
class IFC_PARSE_API IfcHumidifierType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcHumidifierTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcHumidifierTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcHumidifierType (IfcEntityInstanceData* e);
    IfcHumidifierType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcHumidifierTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcHumidifierType > list;
};
class IFC_PARSE_API IfcInventory : public IfcGroup {
public:
    ::Ifc2x3::IfcInventoryTypeEnum::Value InventoryType() const;
    void setInventoryType(::Ifc2x3::IfcInventoryTypeEnum::Value v);
    ::Ifc2x3::IfcActorSelect* Jurisdiction() const;
    void setJurisdiction(::Ifc2x3::IfcActorSelect* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcPerson >::ptr ResponsiblePersons() const;
    void setResponsiblePersons(IfcTemplatedEntityList< ::Ifc2x3::IfcPerson >::ptr v);
    ::Ifc2x3::IfcCalendarDate* LastUpdateDate() const;
    void setLastUpdateDate(::Ifc2x3::IfcCalendarDate* v);
    bool hasCurrentValue() const;
    ::Ifc2x3::IfcCostValue* CurrentValue() const;
    void setCurrentValue(::Ifc2x3::IfcCostValue* v);
    bool hasOriginalValue() const;
    ::Ifc2x3::IfcCostValue* OriginalValue() const;
    void setOriginalValue(::Ifc2x3::IfcCostValue* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcInventory (IfcEntityInstanceData* e);
    IfcInventory (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcInventoryTypeEnum::Value v6_InventoryType, ::Ifc2x3::IfcActorSelect* v7_Jurisdiction, IfcTemplatedEntityList< ::Ifc2x3::IfcPerson >::ptr v8_ResponsiblePersons, ::Ifc2x3::IfcCalendarDate* v9_LastUpdateDate, ::Ifc2x3::IfcCostValue* v10_CurrentValue, ::Ifc2x3::IfcCostValue* v11_OriginalValue);
    typedef IfcTemplatedEntityList< IfcInventory > list;
};
class IFC_PARSE_API IfcJunctionBoxType : public IfcFlowFittingType {
public:
    ::Ifc2x3::IfcJunctionBoxTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcJunctionBoxTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcJunctionBoxType (IfcEntityInstanceData* e);
    IfcJunctionBoxType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcJunctionBoxTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcJunctionBoxType > list;
};
class IFC_PARSE_API IfcLaborResource : public IfcConstructionResource {
public:
    bool hasSkillSet() const;
    std::string SkillSet() const;
    void setSkillSet(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLaborResource (IfcEntityInstanceData* e);
    IfcLaborResource (std::string v1_GlobalId, ::Ifc2x3::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< ::Ifc2x3::IfcResourceConsumptionEnum::Value > v8_ResourceConsumption, ::Ifc2x3::IfcMeasureWithUnit* v9_BaseQuantity, boost::optional< std::string > v10_SkillSet);
    typedef IfcTemplatedEntityList< IfcLaborResource > list;
};
class IFC_PARSE_API IfcLampType : public IfcFlowTerminalType {
public:
    ::Ifc2x3::IfcLampTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcLampTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLampType (IfcEntityInstanceData* e);
    IfcLampType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcLampTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcLampType > list;
};
class IFC_PARSE_API IfcLightFixtureType : public IfcFlowTerminalType {
public:
    ::Ifc2x3::IfcLightFixtureTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcLightFixtureTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightFixtureType (IfcEntityInstanceData* e);
    IfcLightFixtureType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcLightFixtureTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcLightFixtureType > list;
};

class IFC_PARSE_API IfcLinearDimension : public IfcDimensionCurveDirectedCallout {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLinearDimension (IfcEntityInstanceData* e);
    IfcLinearDimension (IfcEntityList::ptr v1_Contents);
    typedef IfcTemplatedEntityList< IfcLinearDimension > list;
};
class IFC_PARSE_API IfcMechanicalFastener : public IfcFastener {
public:
    bool hasNominalDiameter() const;
    double NominalDiameter() const;
    void setNominalDiameter(double v);
    bool hasNominalLength() const;
    double NominalLength() const;
    void setNominalLength(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMechanicalFastener (IfcEntityInstanceData* e);
    IfcMechanicalFastener (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_NominalDiameter, boost::optional< double > v10_NominalLength);
    typedef IfcTemplatedEntityList< IfcMechanicalFastener > list;
};
class IFC_PARSE_API IfcMechanicalFastenerType : public IfcFastenerType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMechanicalFastenerType (IfcEntityInstanceData* e);
    IfcMechanicalFastenerType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcMechanicalFastenerType > list;
};
class IFC_PARSE_API IfcMemberType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcMemberTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcMemberTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMemberType (IfcEntityInstanceData* e);
    IfcMemberType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcMemberTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcMemberType > list;
};
class IFC_PARSE_API IfcMotorConnectionType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcMotorConnectionTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcMotorConnectionTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMotorConnectionType (IfcEntityInstanceData* e);
    IfcMotorConnectionType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcMotorConnectionTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcMotorConnectionType > list;
};

class IFC_PARSE_API IfcMove : public IfcTask {
public:
    ::Ifc2x3::IfcSpatialStructureElement* MoveFrom() const;
    void setMoveFrom(::Ifc2x3::IfcSpatialStructureElement* v);
    ::Ifc2x3::IfcSpatialStructureElement* MoveTo() const;
    void setMoveTo(::Ifc2x3::IfcSpatialStructureElement* v);
    bool hasPunchList() const;
    std::vector< std::string > /*[1:?]*/ PunchList() const;
    void setPunchList(std::vector< std::string > /*[1:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMove (IfcEntityInstanceData* e);
    IfcMove (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcSpatialStructureElement* v11_MoveFrom, ::Ifc2x3::IfcSpatialStructureElement* v12_MoveTo, boost::optional< std::vector< std::string > /*[1:?]*/ > v13_PunchList);
    typedef IfcTemplatedEntityList< IfcMove > list;
};
class IFC_PARSE_API IfcOccupant : public IfcActor {
public:
    ::Ifc2x3::IfcOccupantTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcOccupantTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOccupant (IfcEntityInstanceData* e);
    IfcOccupant (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcActorSelect* v6_TheActor, ::Ifc2x3::IfcOccupantTypeEnum::Value v7_PredefinedType);
    typedef IfcTemplatedEntityList< IfcOccupant > list;
};
class IFC_PARSE_API IfcOpeningElement : public IfcFeatureElementSubtraction {
public:
        IfcTemplatedEntityList< IfcRelFillsElement >::ptr HasFillings() const; // INVERSE IfcRelFillsElement::RelatingOpeningElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOpeningElement (IfcEntityInstanceData* e);
    IfcOpeningElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcOpeningElement > list;
};

class IFC_PARSE_API IfcOrderAction : public IfcTask {
public:
    std::string ActionID() const;
    void setActionID(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOrderAction (IfcEntityInstanceData* e);
    IfcOrderAction (std::string v1_GlobalId, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcOrderAction > list;
};
class IFC_PARSE_API IfcOutletType : public IfcFlowTerminalType {
public:
    ::Ifc2x3::IfcOutletTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcOutletTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOutletType (IfcEntityInstanceData* e);
    IfcOutletType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcOutletTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcOutletType > list;
};
class IFC_PARSE_API IfcPerformanceHistory : public IfcControl {
public:
    std::string LifeCyclePhase() const;
    void setLifeCyclePhase(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPerformanceHistory (IfcEntityInstanceData* e);
    IfcPerformanceHistory (std::string v1_GlobalId, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcPerformanceHistory > list;
};
class IFC_PARSE_API IfcPermit : public IfcControl {
public:
    std::string PermitID() const;
    void setPermitID(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPermit (IfcEntityInstanceData* e);
    IfcPermit (std::string v1_GlobalId, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcPermit > list;
};
class IFC_PARSE_API IfcPipeFittingType : public IfcFlowFittingType {
public:
    ::Ifc2x3::IfcPipeFittingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcPipeFittingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPipeFittingType (IfcEntityInstanceData* e);
    IfcPipeFittingType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcPipeFittingTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPipeFittingType > list;
};
class IFC_PARSE_API IfcPipeSegmentType : public IfcFlowSegmentType {
public:
    ::Ifc2x3::IfcPipeSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcPipeSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPipeSegmentType (IfcEntityInstanceData* e);
    IfcPipeSegmentType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcPipeSegmentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPipeSegmentType > list;
};
class IFC_PARSE_API IfcPlateType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcPlateTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcPlateTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlateType (IfcEntityInstanceData* e);
    IfcPlateType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcPlateTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPlateType > list;
};
class IFC_PARSE_API IfcPolyline : public IfcBoundedCurve {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr Points() const;
    void setPoints(IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPolyline (IfcEntityInstanceData* e);
    IfcPolyline (IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr v1_Points);
    typedef IfcTemplatedEntityList< IfcPolyline > list;
};
class IFC_PARSE_API IfcPort : public IfcProduct {
public:
        IfcTemplatedEntityList< IfcRelConnectsPortToElement >::ptr ContainedIn() const; // INVERSE IfcRelConnectsPortToElement::RelatingPort
    IfcTemplatedEntityList< IfcRelConnectsPorts >::ptr ConnectedFrom() const; // INVERSE IfcRelConnectsPorts::RelatedPort
    IfcTemplatedEntityList< IfcRelConnectsPorts >::ptr ConnectedTo() const; // INVERSE IfcRelConnectsPorts::RelatingPort
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPort (IfcEntityInstanceData* e);
    IfcPort (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation);
    typedef IfcTemplatedEntityList< IfcPort > list;
};
class IFC_PARSE_API IfcProcedure : public IfcProcess {
public:
    std::string ProcedureID() const;
    void setProcedureID(std::string v);
    ::Ifc2x3::IfcProcedureTypeEnum::Value ProcedureType() const;
    void setProcedureType(::Ifc2x3::IfcProcedureTypeEnum::Value v);
    bool hasUserDefinedProcedureType() const;
    std::string UserDefinedProcedureType() const;
    void setUserDefinedProcedureType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProcedure (IfcEntityInstanceData* e);
    IfcProcedure (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcProcedureTypeEnum::Value v7_ProcedureType, boost::optional< std::string > v8_UserDefinedProcedureType);
    typedef IfcTemplatedEntityList< IfcProcedure > list;
};
class IFC_PARSE_API IfcProjectOrder : public IfcControl {
public:
    std::string ID() const;
    void setID(std::string v);
    ::Ifc2x3::IfcProjectOrderTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcProjectOrderTypeEnum::Value v);
    bool hasStatus() const;
    std::string Status() const;
    void setStatus(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProjectOrder (IfcEntityInstanceData* e);
    IfcProjectOrder (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcProjectOrderTypeEnum::Value v7_PredefinedType, boost::optional< std::string > v8_Status);
    typedef IfcTemplatedEntityList< IfcProjectOrder > list;
};

class IFC_PARSE_API IfcProjectOrderRecord : public IfcControl {
public:
    IfcTemplatedEntityList< ::Ifc2x3::IfcRelAssignsToProjectOrder >::ptr Records() const;
    void setRecords(IfcTemplatedEntityList< ::Ifc2x3::IfcRelAssignsToProjectOrder >::ptr v);
    ::Ifc2x3::IfcProjectOrderRecordTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcProjectOrderRecordTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProjectOrderRecord (IfcEntityInstanceData* e);
    IfcProjectOrderRecord (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcTemplatedEntityList< ::Ifc2x3::IfcRelAssignsToProjectOrder >::ptr v6_Records, ::Ifc2x3::IfcProjectOrderRecordTypeEnum::Value v7_PredefinedType);
    typedef IfcTemplatedEntityList< IfcProjectOrderRecord > list;
};
class IFC_PARSE_API IfcProjectionElement : public IfcFeatureElementAddition {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProjectionElement (IfcEntityInstanceData* e);
    IfcProjectionElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcProjectionElement > list;
};
class IFC_PARSE_API IfcProtectiveDeviceType : public IfcFlowControllerType {
public:
    ::Ifc2x3::IfcProtectiveDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcProtectiveDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProtectiveDeviceType (IfcEntityInstanceData* e);
    IfcProtectiveDeviceType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcProtectiveDeviceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcProtectiveDeviceType > list;
};
class IFC_PARSE_API IfcPumpType : public IfcFlowMovingDeviceType {
public:
    ::Ifc2x3::IfcPumpTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcPumpTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPumpType (IfcEntityInstanceData* e);
    IfcPumpType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcPumpTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPumpType > list;
};

class IFC_PARSE_API IfcRadiusDimension : public IfcDimensionCurveDirectedCallout {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRadiusDimension (IfcEntityInstanceData* e);
    IfcRadiusDimension (IfcEntityList::ptr v1_Contents);
    typedef IfcTemplatedEntityList< IfcRadiusDimension > list;
};
class IFC_PARSE_API IfcRailingType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcRailingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcRailingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRailingType (IfcEntityInstanceData* e);
    IfcRailingType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcRailingTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcRailingType > list;
};
class IFC_PARSE_API IfcRampFlightType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcRampFlightTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcRampFlightTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRampFlightType (IfcEntityInstanceData* e);
    IfcRampFlightType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcRampFlightTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcRampFlightType > list;
};
class IFC_PARSE_API IfcRelAggregates : public IfcRelDecomposes {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAggregates (IfcEntityInstanceData* e);
    IfcRelAggregates (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc2x3::IfcObjectDefinition* v5_RelatingObject, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v6_RelatedObjects);
    typedef IfcTemplatedEntityList< IfcRelAggregates > list;
};

class IFC_PARSE_API IfcRelAssignsTasks : public IfcRelAssignsToControl {
public:
    bool hasTimeForTask() const;
    ::Ifc2x3::IfcScheduleTimeControl* TimeForTask() const;
    void setTimeForTask(::Ifc2x3::IfcScheduleTimeControl* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsTasks (IfcEntityInstanceData* e);
    IfcRelAssignsTasks (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc2x3::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc2x3::IfcControl* v7_RelatingControl, ::Ifc2x3::IfcScheduleTimeControl* v8_TimeForTask);
    typedef IfcTemplatedEntityList< IfcRelAssignsTasks > list;
};
class IFC_PARSE_API IfcSanitaryTerminalType : public IfcFlowTerminalType {
public:
    ::Ifc2x3::IfcSanitaryTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcSanitaryTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSanitaryTerminalType (IfcEntityInstanceData* e);
    IfcSanitaryTerminalType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcSanitaryTerminalTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSanitaryTerminalType > list;
};

class IFC_PARSE_API IfcScheduleTimeControl : public IfcControl {
public:
    bool hasActualStart() const;
    ::Ifc2x3::IfcDateTimeSelect* ActualStart() const;
    void setActualStart(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasEarlyStart() const;
    ::Ifc2x3::IfcDateTimeSelect* EarlyStart() const;
    void setEarlyStart(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasLateStart() const;
    ::Ifc2x3::IfcDateTimeSelect* LateStart() const;
    void setLateStart(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasScheduleStart() const;
    ::Ifc2x3::IfcDateTimeSelect* ScheduleStart() const;
    void setScheduleStart(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasActualFinish() const;
    ::Ifc2x3::IfcDateTimeSelect* ActualFinish() const;
    void setActualFinish(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasEarlyFinish() const;
    ::Ifc2x3::IfcDateTimeSelect* EarlyFinish() const;
    void setEarlyFinish(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasLateFinish() const;
    ::Ifc2x3::IfcDateTimeSelect* LateFinish() const;
    void setLateFinish(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasScheduleFinish() const;
    ::Ifc2x3::IfcDateTimeSelect* ScheduleFinish() const;
    void setScheduleFinish(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasScheduleDuration() const;
    double ScheduleDuration() const;
    void setScheduleDuration(double v);
    bool hasActualDuration() const;
    double ActualDuration() const;
    void setActualDuration(double v);
    bool hasRemainingTime() const;
    double RemainingTime() const;
    void setRemainingTime(double v);
    bool hasFreeFloat() const;
    double FreeFloat() const;
    void setFreeFloat(double v);
    bool hasTotalFloat() const;
    double TotalFloat() const;
    void setTotalFloat(double v);
    bool hasIsCritical() const;
    bool IsCritical() const;
    void setIsCritical(bool v);
    bool hasStatusTime() const;
    ::Ifc2x3::IfcDateTimeSelect* StatusTime() const;
    void setStatusTime(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasStartFloat() const;
    double StartFloat() const;
    void setStartFloat(double v);
    bool hasFinishFloat() const;
    double FinishFloat() const;
    void setFinishFloat(double v);
    bool hasCompletion() const;
    double Completion() const;
    void setCompletion(double v);
        IfcTemplatedEntityList< IfcRelAssignsTasks >::ptr ScheduleTimeControlAssigned() const; // INVERSE IfcRelAssignsTasks::TimeForTask
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcScheduleTimeControl (IfcEntityInstanceData* e);
    IfcScheduleTimeControl (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcDateTimeSelect* v6_ActualStart, ::Ifc2x3::IfcDateTimeSelect* v7_EarlyStart, ::Ifc2x3::IfcDateTimeSelect* v8_LateStart, ::Ifc2x3::IfcDateTimeSelect* v9_ScheduleStart, ::Ifc2x3::IfcDateTimeSelect* v10_ActualFinish, ::Ifc2x3::IfcDateTimeSelect* v11_EarlyFinish, ::Ifc2x3::IfcDateTimeSelect* v12_LateFinish, ::Ifc2x3::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, ::Ifc2x3::IfcDateTimeSelect* v20_StatusTime, boost::optional< double > v21_StartFloat, boost::optional< double > v22_FinishFloat, boost::optional< double > v23_Completion);
    typedef IfcTemplatedEntityList< IfcScheduleTimeControl > list;
};

class IFC_PARSE_API IfcServiceLife : public IfcControl {
public:
    ::Ifc2x3::IfcServiceLifeTypeEnum::Value ServiceLifeType() const;
    void setServiceLifeType(::Ifc2x3::IfcServiceLifeTypeEnum::Value v);
    double ServiceLifeDuration() const;
    void setServiceLifeDuration(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcServiceLife (IfcEntityInstanceData* e);
    IfcServiceLife (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcServiceLifeTypeEnum::Value v6_ServiceLifeType, double v7_ServiceLifeDuration);
    typedef IfcTemplatedEntityList< IfcServiceLife > list;
};
class IFC_PARSE_API IfcSite : public IfcSpatialStructureElement {
public:
    bool hasRefLatitude() const;
    std::vector< int > /*[3:4]*/ RefLatitude() const;
    void setRefLatitude(std::vector< int > /*[3:4]*/ v);
    bool hasRefLongitude() const;
    std::vector< int > /*[3:4]*/ RefLongitude() const;
    void setRefLongitude(std::vector< int > /*[3:4]*/ v);
    bool hasRefElevation() const;
    double RefElevation() const;
    void setRefElevation(double v);
    bool hasLandTitleNumber() const;
    std::string LandTitleNumber() const;
    void setLandTitleNumber(std::string v);
    bool hasSiteAddress() const;
    ::Ifc2x3::IfcPostalAddress* SiteAddress() const;
    void setSiteAddress(::Ifc2x3::IfcPostalAddress* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSite (IfcEntityInstanceData* e);
    IfcSite (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, ::Ifc2x3::IfcElementCompositionEnum::Value v9_CompositionType, boost::optional< std::vector< int > /*[3:4]*/ > v10_RefLatitude, boost::optional< std::vector< int > /*[3:4]*/ > v11_RefLongitude, boost::optional< double > v12_RefElevation, boost::optional< std::string > v13_LandTitleNumber, ::Ifc2x3::IfcPostalAddress* v14_SiteAddress);
    typedef IfcTemplatedEntityList< IfcSite > list;
};
class IFC_PARSE_API IfcSlabType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcSlabTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcSlabTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSlabType (IfcEntityInstanceData* e);
    IfcSlabType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcSlabTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSlabType > list;
};
class IFC_PARSE_API IfcSpace : public IfcSpatialStructureElement {
public:
    ::Ifc2x3::IfcInternalOrExternalEnum::Value InteriorOrExteriorSpace() const;
    void setInteriorOrExteriorSpace(::Ifc2x3::IfcInternalOrExternalEnum::Value v);
    bool hasElevationWithFlooring() const;
    double ElevationWithFlooring() const;
    void setElevationWithFlooring(double v);
        IfcTemplatedEntityList< IfcRelCoversSpaces >::ptr HasCoverings() const; // INVERSE IfcRelCoversSpaces::RelatedSpace
    IfcTemplatedEntityList< IfcRelSpaceBoundary >::ptr BoundedBy() const; // INVERSE IfcRelSpaceBoundary::RelatingSpace
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpace (IfcEntityInstanceData* e);
    IfcSpace (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, ::Ifc2x3::IfcElementCompositionEnum::Value v9_CompositionType, ::Ifc2x3::IfcInternalOrExternalEnum::Value v10_InteriorOrExteriorSpace, boost::optional< double > v11_ElevationWithFlooring);
    typedef IfcTemplatedEntityList< IfcSpace > list;
};
class IFC_PARSE_API IfcSpaceHeaterType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcSpaceHeaterTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcSpaceHeaterTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpaceHeaterType (IfcEntityInstanceData* e);
    IfcSpaceHeaterType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcSpaceHeaterTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSpaceHeaterType > list;
};

class IFC_PARSE_API IfcSpaceProgram : public IfcControl {
public:
    std::string SpaceProgramIdentifier() const;
    void setSpaceProgramIdentifier(std::string v);
    bool hasMaxRequiredArea() const;
    double MaxRequiredArea() const;
    void setMaxRequiredArea(double v);
    bool hasMinRequiredArea() const;
    double MinRequiredArea() const;
    void setMinRequiredArea(double v);
    bool hasRequestedLocation() const;
    ::Ifc2x3::IfcSpatialStructureElement* RequestedLocation() const;
    void setRequestedLocation(::Ifc2x3::IfcSpatialStructureElement* v);
    double StandardRequiredArea() const;
    void setStandardRequiredArea(double v);
        IfcTemplatedEntityList< IfcRelInteractionRequirements >::ptr HasInteractionReqsFrom() const; // INVERSE IfcRelInteractionRequirements::RelatedSpaceProgram
    IfcTemplatedEntityList< IfcRelInteractionRequirements >::ptr HasInteractionReqsTo() const; // INVERSE IfcRelInteractionRequirements::RelatingSpaceProgram
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpaceProgram (IfcEntityInstanceData* e);
    IfcSpaceProgram (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcSpatialStructureElement* v9_RequestedLocation, double v10_StandardRequiredArea);
    typedef IfcTemplatedEntityList< IfcSpaceProgram > list;
};
class IFC_PARSE_API IfcSpaceType : public IfcSpatialStructureElementType {
public:
    ::Ifc2x3::IfcSpaceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcSpaceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpaceType (IfcEntityInstanceData* e);
    IfcSpaceType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcSpaceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSpaceType > list;
};
class IFC_PARSE_API IfcStackTerminalType : public IfcFlowTerminalType {
public:
    ::Ifc2x3::IfcStackTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcStackTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStackTerminalType (IfcEntityInstanceData* e);
    IfcStackTerminalType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcStackTerminalTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStackTerminalType > list;
};
class IFC_PARSE_API IfcStairFlightType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcStairFlightTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcStairFlightTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStairFlightType (IfcEntityInstanceData* e);
    IfcStairFlightType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcStairFlightTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStairFlightType > list;
};
class IFC_PARSE_API IfcStructuralAction : public IfcStructuralActivity {
public:
    bool DestabilizingLoad() const;
    void setDestabilizingLoad(bool v);
    bool hasCausedBy() const;
    ::Ifc2x3::IfcStructuralReaction* CausedBy() const;
    void setCausedBy(::Ifc2x3::IfcStructuralReaction* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralAction (IfcEntityInstanceData* e);
    IfcStructuralAction (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralLoad* v8_AppliedLoad, ::Ifc2x3::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, bool v10_DestabilizingLoad, ::Ifc2x3::IfcStructuralReaction* v11_CausedBy);
    typedef IfcTemplatedEntityList< IfcStructuralAction > list;
};
class IFC_PARSE_API IfcStructuralConnection : public IfcStructuralItem {
public:
    bool hasAppliedCondition() const;
    ::Ifc2x3::IfcBoundaryCondition* AppliedCondition() const;
    void setAppliedCondition(::Ifc2x3::IfcBoundaryCondition* v);
        IfcTemplatedEntityList< IfcRelConnectsStructuralMember >::ptr ConnectsStructuralMembers() const; // INVERSE IfcRelConnectsStructuralMember::RelatedStructuralConnection
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralConnection (IfcEntityInstanceData* e);
    IfcStructuralConnection (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcBoundaryCondition* v8_AppliedCondition);
    typedef IfcTemplatedEntityList< IfcStructuralConnection > list;
};
class IFC_PARSE_API IfcStructuralCurveConnection : public IfcStructuralConnection {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralCurveConnection (IfcEntityInstanceData* e);
    IfcStructuralCurveConnection (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcBoundaryCondition* v8_AppliedCondition);
    typedef IfcTemplatedEntityList< IfcStructuralCurveConnection > list;
};
class IFC_PARSE_API IfcStructuralCurveMember : public IfcStructuralMember {
public:
    ::Ifc2x3::IfcStructuralCurveTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcStructuralCurveTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralCurveMember (IfcEntityInstanceData* e);
    IfcStructuralCurveMember (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralCurveTypeEnum::Value v8_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStructuralCurveMember > list;
};
class IFC_PARSE_API IfcStructuralCurveMemberVarying : public IfcStructuralCurveMember {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralCurveMemberVarying (IfcEntityInstanceData* e);
    IfcStructuralCurveMemberVarying (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralCurveTypeEnum::Value v8_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStructuralCurveMemberVarying > list;
};
class IFC_PARSE_API IfcStructuralLinearAction : public IfcStructuralAction {
public:
    ::Ifc2x3::IfcProjectedOrTrueLengthEnum::Value ProjectedOrTrue() const;
    void setProjectedOrTrue(::Ifc2x3::IfcProjectedOrTrueLengthEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLinearAction (IfcEntityInstanceData* e);
    IfcStructuralLinearAction (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralLoad* v8_AppliedLoad, ::Ifc2x3::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, bool v10_DestabilizingLoad, ::Ifc2x3::IfcStructuralReaction* v11_CausedBy, ::Ifc2x3::IfcProjectedOrTrueLengthEnum::Value v12_ProjectedOrTrue);
    typedef IfcTemplatedEntityList< IfcStructuralLinearAction > list;
};

class IFC_PARSE_API IfcStructuralLinearActionVarying : public IfcStructuralLinearAction {
public:
    ::Ifc2x3::IfcShapeAspect* VaryingAppliedLoadLocation() const;
    void setVaryingAppliedLoadLocation(::Ifc2x3::IfcShapeAspect* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralLoad >::ptr SubsequentAppliedLoads() const;
    void setSubsequentAppliedLoads(IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralLoad >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLinearActionVarying (IfcEntityInstanceData* e);
    IfcStructuralLinearActionVarying (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralLoad* v8_AppliedLoad, ::Ifc2x3::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, bool v10_DestabilizingLoad, ::Ifc2x3::IfcStructuralReaction* v11_CausedBy, ::Ifc2x3::IfcProjectedOrTrueLengthEnum::Value v12_ProjectedOrTrue, ::Ifc2x3::IfcShapeAspect* v13_VaryingAppliedLoadLocation, IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralLoad >::ptr v14_SubsequentAppliedLoads);
    typedef IfcTemplatedEntityList< IfcStructuralLinearActionVarying > list;
};
class IFC_PARSE_API IfcStructuralLoadGroup : public IfcGroup {
public:
    ::Ifc2x3::IfcLoadGroupTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcLoadGroupTypeEnum::Value v);
    ::Ifc2x3::IfcActionTypeEnum::Value ActionType() const;
    void setActionType(::Ifc2x3::IfcActionTypeEnum::Value v);
    ::Ifc2x3::IfcActionSourceTypeEnum::Value ActionSource() const;
    void setActionSource(::Ifc2x3::IfcActionSourceTypeEnum::Value v);
    bool hasCoefficient() const;
    double Coefficient() const;
    void setCoefficient(double v);
    bool hasPurpose() const;
    std::string Purpose() const;
    void setPurpose(std::string v);
        IfcTemplatedEntityList< IfcStructuralResultGroup >::ptr SourceOfResultGroup() const; // INVERSE IfcStructuralResultGroup::ResultForLoadGroup
    IfcTemplatedEntityList< IfcStructuralAnalysisModel >::ptr LoadGroupFor() const; // INVERSE IfcStructuralAnalysisModel::LoadedBy
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadGroup (IfcEntityInstanceData* e);
    IfcStructuralLoadGroup (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc2x3::IfcActionTypeEnum::Value v7_ActionType, ::Ifc2x3::IfcActionSourceTypeEnum::Value v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose);
    typedef IfcTemplatedEntityList< IfcStructuralLoadGroup > list;
};
class IFC_PARSE_API IfcStructuralPlanarAction : public IfcStructuralAction {
public:
    ::Ifc2x3::IfcProjectedOrTrueLengthEnum::Value ProjectedOrTrue() const;
    void setProjectedOrTrue(::Ifc2x3::IfcProjectedOrTrueLengthEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralPlanarAction (IfcEntityInstanceData* e);
    IfcStructuralPlanarAction (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralLoad* v8_AppliedLoad, ::Ifc2x3::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, bool v10_DestabilizingLoad, ::Ifc2x3::IfcStructuralReaction* v11_CausedBy, ::Ifc2x3::IfcProjectedOrTrueLengthEnum::Value v12_ProjectedOrTrue);
    typedef IfcTemplatedEntityList< IfcStructuralPlanarAction > list;
};

class IFC_PARSE_API IfcStructuralPlanarActionVarying : public IfcStructuralPlanarAction {
public:
    ::Ifc2x3::IfcShapeAspect* VaryingAppliedLoadLocation() const;
    void setVaryingAppliedLoadLocation(::Ifc2x3::IfcShapeAspect* v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralLoad >::ptr SubsequentAppliedLoads() const;
    void setSubsequentAppliedLoads(IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralLoad >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralPlanarActionVarying (IfcEntityInstanceData* e);
    IfcStructuralPlanarActionVarying (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralLoad* v8_AppliedLoad, ::Ifc2x3::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, bool v10_DestabilizingLoad, ::Ifc2x3::IfcStructuralReaction* v11_CausedBy, ::Ifc2x3::IfcProjectedOrTrueLengthEnum::Value v12_ProjectedOrTrue, ::Ifc2x3::IfcShapeAspect* v13_VaryingAppliedLoadLocation, IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralLoad >::ptr v14_SubsequentAppliedLoads);
    typedef IfcTemplatedEntityList< IfcStructuralPlanarActionVarying > list;
};
class IFC_PARSE_API IfcStructuralPointAction : public IfcStructuralAction {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralPointAction (IfcEntityInstanceData* e);
    IfcStructuralPointAction (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralLoad* v8_AppliedLoad, ::Ifc2x3::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, bool v10_DestabilizingLoad, ::Ifc2x3::IfcStructuralReaction* v11_CausedBy);
    typedef IfcTemplatedEntityList< IfcStructuralPointAction > list;
};
class IFC_PARSE_API IfcStructuralPointConnection : public IfcStructuralConnection {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralPointConnection (IfcEntityInstanceData* e);
    IfcStructuralPointConnection (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcBoundaryCondition* v8_AppliedCondition);
    typedef IfcTemplatedEntityList< IfcStructuralPointConnection > list;
};
class IFC_PARSE_API IfcStructuralPointReaction : public IfcStructuralReaction {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralPointReaction (IfcEntityInstanceData* e);
    IfcStructuralPointReaction (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcStructuralLoad* v8_AppliedLoad, ::Ifc2x3::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal);
    typedef IfcTemplatedEntityList< IfcStructuralPointReaction > list;
};
class IFC_PARSE_API IfcStructuralResultGroup : public IfcGroup {
public:
    ::Ifc2x3::IfcAnalysisTheoryTypeEnum::Value TheoryType() const;
    void setTheoryType(::Ifc2x3::IfcAnalysisTheoryTypeEnum::Value v);
    bool hasResultForLoadGroup() const;
    ::Ifc2x3::IfcStructuralLoadGroup* ResultForLoadGroup() const;
    void setResultForLoadGroup(::Ifc2x3::IfcStructuralLoadGroup* v);
    bool IsLinear() const;
    void setIsLinear(bool v);
        IfcTemplatedEntityList< IfcStructuralAnalysisModel >::ptr ResultGroupFor() const; // INVERSE IfcStructuralAnalysisModel::HasResults
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralResultGroup (IfcEntityInstanceData* e);
    IfcStructuralResultGroup (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcAnalysisTheoryTypeEnum::Value v6_TheoryType, ::Ifc2x3::IfcStructuralLoadGroup* v7_ResultForLoadGroup, bool v8_IsLinear);
    typedef IfcTemplatedEntityList< IfcStructuralResultGroup > list;
};
class IFC_PARSE_API IfcStructuralSurfaceConnection : public IfcStructuralConnection {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralSurfaceConnection (IfcEntityInstanceData* e);
    IfcStructuralSurfaceConnection (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, ::Ifc2x3::IfcBoundaryCondition* v8_AppliedCondition);
    typedef IfcTemplatedEntityList< IfcStructuralSurfaceConnection > list;
};
class IFC_PARSE_API IfcSubContractResource : public IfcConstructionResource {
public:
    bool hasSubContractor() const;
    ::Ifc2x3::IfcActorSelect* SubContractor() const;
    void setSubContractor(::Ifc2x3::IfcActorSelect* v);
    bool hasJobDescription() const;
    std::string JobDescription() const;
    void setJobDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSubContractResource (IfcEntityInstanceData* e);
    IfcSubContractResource (std::string v1_GlobalId, ::Ifc2x3::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< ::Ifc2x3::IfcResourceConsumptionEnum::Value > v8_ResourceConsumption, ::Ifc2x3::IfcMeasureWithUnit* v9_BaseQuantity, ::Ifc2x3::IfcActorSelect* v10_SubContractor, boost::optional< std::string > v11_JobDescription);
    typedef IfcTemplatedEntityList< IfcSubContractResource > list;
};
class IFC_PARSE_API IfcSwitchingDeviceType : public IfcFlowControllerType {
public:
    ::Ifc2x3::IfcSwitchingDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcSwitchingDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSwitchingDeviceType (IfcEntityInstanceData* e);
    IfcSwitchingDeviceType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcSwitchingDeviceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSwitchingDeviceType > list;
};
class IFC_PARSE_API IfcSystem : public IfcGroup {
public:
        IfcTemplatedEntityList< IfcRelServicesBuildings >::ptr ServicesBuildings() const; // INVERSE IfcRelServicesBuildings::RelatingSystem
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSystem (IfcEntityInstanceData* e);
    IfcSystem (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcSystem > list;
};
class IFC_PARSE_API IfcTankType : public IfcFlowStorageDeviceType {
public:
    ::Ifc2x3::IfcTankTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcTankTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTankType (IfcEntityInstanceData* e);
    IfcTankType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcTankTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTankType > list;
};

class IFC_PARSE_API IfcTimeSeriesSchedule : public IfcControl {
public:
    bool hasApplicableDates() const;
    IfcEntityList::ptr ApplicableDates() const;
    void setApplicableDates(IfcEntityList::ptr v);
    ::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::Value TimeSeriesScheduleType() const;
    void setTimeSeriesScheduleType(::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::Value v);
    ::Ifc2x3::IfcTimeSeries* TimeSeries() const;
    void setTimeSeries(::Ifc2x3::IfcTimeSeries* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTimeSeriesSchedule (IfcEntityInstanceData* e);
    IfcTimeSeriesSchedule (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::Value v7_TimeSeriesScheduleType, ::Ifc2x3::IfcTimeSeries* v8_TimeSeries);
    typedef IfcTemplatedEntityList< IfcTimeSeriesSchedule > list;
};
class IFC_PARSE_API IfcTransformerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcTransformerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcTransformerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTransformerType (IfcEntityInstanceData* e);
    IfcTransformerType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcTransformerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTransformerType > list;
};
class IFC_PARSE_API IfcTransportElement : public IfcElement {
public:
    bool hasOperationType() const;
    ::Ifc2x3::IfcTransportElementTypeEnum::Value OperationType() const;
    void setOperationType(::Ifc2x3::IfcTransportElementTypeEnum::Value v);
    bool hasCapacityByWeight() const;
    double CapacityByWeight() const;
    void setCapacityByWeight(double v);
    bool hasCapacityByNumber() const;
    double CapacityByNumber() const;
    void setCapacityByNumber(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTransportElement (IfcEntityInstanceData* e);
    IfcTransportElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc2x3::IfcTransportElementTypeEnum::Value > v9_OperationType, boost::optional< double > v10_CapacityByWeight, boost::optional< double > v11_CapacityByNumber);
    typedef IfcTemplatedEntityList< IfcTransportElement > list;
};
class IFC_PARSE_API IfcTrimmedCurve : public IfcBoundedCurve {
public:
    ::Ifc2x3::IfcCurve* BasisCurve() const;
    void setBasisCurve(::Ifc2x3::IfcCurve* v);
    IfcEntityList::ptr Trim1() const;
    void setTrim1(IfcEntityList::ptr v);
    IfcEntityList::ptr Trim2() const;
    void setTrim2(IfcEntityList::ptr v);
    bool SenseAgreement() const;
    void setSenseAgreement(bool v);
    ::Ifc2x3::IfcTrimmingPreference::Value MasterRepresentation() const;
    void setMasterRepresentation(::Ifc2x3::IfcTrimmingPreference::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTrimmedCurve (IfcEntityInstanceData* e);
    IfcTrimmedCurve (::Ifc2x3::IfcCurve* v1_BasisCurve, IfcEntityList::ptr v2_Trim1, IfcEntityList::ptr v3_Trim2, bool v4_SenseAgreement, ::Ifc2x3::IfcTrimmingPreference::Value v5_MasterRepresentation);
    typedef IfcTemplatedEntityList< IfcTrimmedCurve > list;
};
class IFC_PARSE_API IfcTubeBundleType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcTubeBundleTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcTubeBundleTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTubeBundleType (IfcEntityInstanceData* e);
    IfcTubeBundleType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcTubeBundleTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTubeBundleType > list;
};
class IFC_PARSE_API IfcUnitaryEquipmentType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcUnitaryEquipmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcUnitaryEquipmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcUnitaryEquipmentType (IfcEntityInstanceData* e);
    IfcUnitaryEquipmentType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcUnitaryEquipmentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcUnitaryEquipmentType > list;
};
class IFC_PARSE_API IfcValveType : public IfcFlowControllerType {
public:
    ::Ifc2x3::IfcValveTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcValveTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcValveType (IfcEntityInstanceData* e);
    IfcValveType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcValveTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcValveType > list;
};
class IFC_PARSE_API IfcVirtualElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVirtualElement (IfcEntityInstanceData* e);
    IfcVirtualElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcVirtualElement > list;
};
class IFC_PARSE_API IfcWallType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcWallTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcWallTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWallType (IfcEntityInstanceData* e);
    IfcWallType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcWallTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcWallType > list;
};
class IFC_PARSE_API IfcWasteTerminalType : public IfcFlowTerminalType {
public:
    ::Ifc2x3::IfcWasteTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcWasteTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWasteTerminalType (IfcEntityInstanceData* e);
    IfcWasteTerminalType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcWasteTerminalTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcWasteTerminalType > list;
};
class IFC_PARSE_API IfcWorkControl : public IfcControl {
public:
    std::string Identifier() const;
    void setIdentifier(std::string v);
    ::Ifc2x3::IfcDateTimeSelect* CreationDate() const;
    void setCreationDate(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasCreators() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcPerson >::ptr Creators() const;
    void setCreators(IfcTemplatedEntityList< ::Ifc2x3::IfcPerson >::ptr v);
    bool hasPurpose() const;
    std::string Purpose() const;
    void setPurpose(std::string v);
    bool hasDuration() const;
    double Duration() const;
    void setDuration(double v);
    bool hasTotalFloat() const;
    double TotalFloat() const;
    void setTotalFloat(double v);
    ::Ifc2x3::IfcDateTimeSelect* StartTime() const;
    void setStartTime(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasFinishTime() const;
    ::Ifc2x3::IfcDateTimeSelect* FinishTime() const;
    void setFinishTime(::Ifc2x3::IfcDateTimeSelect* v);
    bool hasWorkControlType() const;
    ::Ifc2x3::IfcWorkControlTypeEnum::Value WorkControlType() const;
    void setWorkControlType(::Ifc2x3::IfcWorkControlTypeEnum::Value v);
    bool hasUserDefinedControlType() const;
    std::string UserDefinedControlType() const;
    void setUserDefinedControlType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWorkControl (IfcEntityInstanceData* e);
    IfcWorkControl (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcDateTimeSelect* v7_CreationDate, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< double > v10_Duration, boost::optional< double > v11_TotalFloat, ::Ifc2x3::IfcDateTimeSelect* v12_StartTime, ::Ifc2x3::IfcDateTimeSelect* v13_FinishTime, boost::optional< ::Ifc2x3::IfcWorkControlTypeEnum::Value > v14_WorkControlType, boost::optional< std::string > v15_UserDefinedControlType);
    typedef IfcTemplatedEntityList< IfcWorkControl > list;
};
class IFC_PARSE_API IfcWorkPlan : public IfcWorkControl {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWorkPlan (IfcEntityInstanceData* e);
    IfcWorkPlan (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcDateTimeSelect* v7_CreationDate, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< double > v10_Duration, boost::optional< double > v11_TotalFloat, ::Ifc2x3::IfcDateTimeSelect* v12_StartTime, ::Ifc2x3::IfcDateTimeSelect* v13_FinishTime, boost::optional< ::Ifc2x3::IfcWorkControlTypeEnum::Value > v14_WorkControlType, boost::optional< std::string > v15_UserDefinedControlType);
    typedef IfcTemplatedEntityList< IfcWorkPlan > list;
};
class IFC_PARSE_API IfcWorkSchedule : public IfcWorkControl {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWorkSchedule (IfcEntityInstanceData* e);
    IfcWorkSchedule (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcDateTimeSelect* v7_CreationDate, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< double > v10_Duration, boost::optional< double > v11_TotalFloat, ::Ifc2x3::IfcDateTimeSelect* v12_StartTime, ::Ifc2x3::IfcDateTimeSelect* v13_FinishTime, boost::optional< ::Ifc2x3::IfcWorkControlTypeEnum::Value > v14_WorkControlType, boost::optional< std::string > v15_UserDefinedControlType);
    typedef IfcTemplatedEntityList< IfcWorkSchedule > list;
};
class IFC_PARSE_API IfcZone : public IfcGroup {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcZone (IfcEntityInstanceData* e);
    IfcZone (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcZone > list;
};

class IFC_PARSE_API Ifc2DCompositeCurve : public IfcCompositeCurve {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    Ifc2DCompositeCurve (IfcEntityInstanceData* e);
    Ifc2DCompositeCurve (IfcTemplatedEntityList< ::Ifc2x3::IfcCompositeCurveSegment >::ptr v1_Segments, bool v2_SelfIntersect);
    typedef IfcTemplatedEntityList< Ifc2DCompositeCurve > list;
};
class IFC_PARSE_API IfcActionRequest : public IfcControl {
public:
    std::string RequestID() const;
    void setRequestID(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcActionRequest (IfcEntityInstanceData* e);
    IfcActionRequest (std::string v1_GlobalId, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcActionRequest > list;
};
class IFC_PARSE_API IfcAirTerminalBoxType : public IfcFlowControllerType {
public:
    ::Ifc2x3::IfcAirTerminalBoxTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcAirTerminalBoxTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAirTerminalBoxType (IfcEntityInstanceData* e);
    IfcAirTerminalBoxType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcAirTerminalBoxTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAirTerminalBoxType > list;
};
class IFC_PARSE_API IfcAirTerminalType : public IfcFlowTerminalType {
public:
    ::Ifc2x3::IfcAirTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcAirTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAirTerminalType (IfcEntityInstanceData* e);
    IfcAirTerminalType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcAirTerminalTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAirTerminalType > list;
};
class IFC_PARSE_API IfcAirToAirHeatRecoveryType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcAirToAirHeatRecoveryTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcAirToAirHeatRecoveryTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAirToAirHeatRecoveryType (IfcEntityInstanceData* e);
    IfcAirToAirHeatRecoveryType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcAirToAirHeatRecoveryTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAirToAirHeatRecoveryType > list;
};

class IFC_PARSE_API IfcAngularDimension : public IfcDimensionCurveDirectedCallout {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAngularDimension (IfcEntityInstanceData* e);
    IfcAngularDimension (IfcEntityList::ptr v1_Contents);
    typedef IfcTemplatedEntityList< IfcAngularDimension > list;
};
class IFC_PARSE_API IfcAsset : public IfcGroup {
public:
    std::string AssetID() const;
    void setAssetID(std::string v);
    ::Ifc2x3::IfcCostValue* OriginalValue() const;
    void setOriginalValue(::Ifc2x3::IfcCostValue* v);
    ::Ifc2x3::IfcCostValue* CurrentValue() const;
    void setCurrentValue(::Ifc2x3::IfcCostValue* v);
    ::Ifc2x3::IfcCostValue* TotalReplacementCost() const;
    void setTotalReplacementCost(::Ifc2x3::IfcCostValue* v);
    ::Ifc2x3::IfcActorSelect* Owner() const;
    void setOwner(::Ifc2x3::IfcActorSelect* v);
    ::Ifc2x3::IfcActorSelect* User() const;
    void setUser(::Ifc2x3::IfcActorSelect* v);
    ::Ifc2x3::IfcPerson* ResponsiblePerson() const;
    void setResponsiblePerson(::Ifc2x3::IfcPerson* v);
    ::Ifc2x3::IfcCalendarDate* IncorporationDate() const;
    void setIncorporationDate(::Ifc2x3::IfcCalendarDate* v);
    ::Ifc2x3::IfcCostValue* DepreciatedValue() const;
    void setDepreciatedValue(::Ifc2x3::IfcCostValue* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAsset (IfcEntityInstanceData* e);
    IfcAsset (std::string v1_GlobalId, ::Ifc2x3::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, ::Ifc2x3::IfcCostValue* v7_OriginalValue, ::Ifc2x3::IfcCostValue* v8_CurrentValue, ::Ifc2x3::IfcCostValue* v9_TotalReplacementCost, ::Ifc2x3::IfcActorSelect* v10_Owner, ::Ifc2x3::IfcActorSelect* v11_User, ::Ifc2x3::IfcPerson* v12_ResponsiblePerson, ::Ifc2x3::IfcCalendarDate* v13_IncorporationDate, ::Ifc2x3::IfcCostValue* v14_DepreciatedValue);
    typedef IfcTemplatedEntityList< IfcAsset > list;
};
class IFC_PARSE_API IfcBSplineCurve : public IfcBoundedCurve {
public:
    int Degree() const;
    void setDegree(int v);
    IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr ControlPointsList() const;
    void setControlPointsList(IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr v);
    ::Ifc2x3::IfcBSplineCurveForm::Value CurveForm() const;
    void setCurveForm(::Ifc2x3::IfcBSplineCurveForm::Value v);
    bool ClosedCurve() const;
    void setClosedCurve(bool v);
    bool SelfIntersect() const;
    void setSelfIntersect(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBSplineCurve (IfcEntityInstanceData* e);
    IfcBSplineCurve (int v1_Degree, IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc2x3::IfcBSplineCurveForm::Value v3_CurveForm, bool v4_ClosedCurve, bool v5_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcBSplineCurve > list;
};
class IFC_PARSE_API IfcBeamType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcBeamTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcBeamTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBeamType (IfcEntityInstanceData* e);
    IfcBeamType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcBeamTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBeamType > list;
};

class IFC_PARSE_API IfcBezierCurve : public IfcBSplineCurve {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBezierCurve (IfcEntityInstanceData* e);
    IfcBezierCurve (int v1_Degree, IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc2x3::IfcBSplineCurveForm::Value v3_CurveForm, bool v4_ClosedCurve, bool v5_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcBezierCurve > list;
};
class IFC_PARSE_API IfcBoilerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcBoilerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcBoilerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoilerType (IfcEntityInstanceData* e);
    IfcBoilerType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcBoilerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBoilerType > list;
};
class IFC_PARSE_API IfcBuildingElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElement (IfcEntityInstanceData* e);
    IfcBuildingElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcBuildingElement > list;
};

class IFC_PARSE_API IfcBuildingElementComponent : public IfcBuildingElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElementComponent (IfcEntityInstanceData* e);
    IfcBuildingElementComponent (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcBuildingElementComponent > list;
};
class IFC_PARSE_API IfcBuildingElementPart : public IfcBuildingElementComponent {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElementPart (IfcEntityInstanceData* e);
    IfcBuildingElementPart (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcBuildingElementPart > list;
};
class IFC_PARSE_API IfcBuildingElementProxy : public IfcBuildingElement {
public:
    bool hasCompositionType() const;
    ::Ifc2x3::IfcElementCompositionEnum::Value CompositionType() const;
    void setCompositionType(::Ifc2x3::IfcElementCompositionEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElementProxy (IfcEntityInstanceData* e);
    IfcBuildingElementProxy (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc2x3::IfcElementCompositionEnum::Value > v9_CompositionType);
    typedef IfcTemplatedEntityList< IfcBuildingElementProxy > list;
};
class IFC_PARSE_API IfcBuildingElementProxyType : public IfcBuildingElementType {
public:
    ::Ifc2x3::IfcBuildingElementProxyTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcBuildingElementProxyTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElementProxyType (IfcEntityInstanceData* e);
    IfcBuildingElementProxyType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcBuildingElementProxyTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBuildingElementProxyType > list;
};
class IFC_PARSE_API IfcCableCarrierFittingType : public IfcFlowFittingType {
public:
    ::Ifc2x3::IfcCableCarrierFittingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCableCarrierFittingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCableCarrierFittingType (IfcEntityInstanceData* e);
    IfcCableCarrierFittingType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcCableCarrierFittingTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCableCarrierFittingType > list;
};
class IFC_PARSE_API IfcCableCarrierSegmentType : public IfcFlowSegmentType {
public:
    ::Ifc2x3::IfcCableCarrierSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCableCarrierSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCableCarrierSegmentType (IfcEntityInstanceData* e);
    IfcCableCarrierSegmentType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcCableCarrierSegmentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCableCarrierSegmentType > list;
};
class IFC_PARSE_API IfcCableSegmentType : public IfcFlowSegmentType {
public:
    ::Ifc2x3::IfcCableSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCableSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCableSegmentType (IfcEntityInstanceData* e);
    IfcCableSegmentType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcCableSegmentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCableSegmentType > list;
};
class IFC_PARSE_API IfcChillerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcChillerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcChillerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcChillerType (IfcEntityInstanceData* e);
    IfcChillerType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcChillerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcChillerType > list;
};
class IFC_PARSE_API IfcCircle : public IfcConic {
public:
    double Radius() const;
    void setRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCircle (IfcEntityInstanceData* e);
    IfcCircle (::Ifc2x3::IfcAxis2Placement* v1_Position, double v2_Radius);
    typedef IfcTemplatedEntityList< IfcCircle > list;
};
class IFC_PARSE_API IfcCoilType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcCoilTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCoilTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCoilType (IfcEntityInstanceData* e);
    IfcCoilType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcCoilTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCoilType > list;
};
class IFC_PARSE_API IfcColumn : public IfcBuildingElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcColumn (IfcEntityInstanceData* e);
    IfcColumn (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcColumn > list;
};
class IFC_PARSE_API IfcCompressorType : public IfcFlowMovingDeviceType {
public:
    ::Ifc2x3::IfcCompressorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCompressorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCompressorType (IfcEntityInstanceData* e);
    IfcCompressorType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcCompressorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCompressorType > list;
};
class IFC_PARSE_API IfcCondenserType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcCondenserTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCondenserTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCondenserType (IfcEntityInstanceData* e);
    IfcCondenserType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcCondenserTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCondenserType > list;
};

class IFC_PARSE_API IfcCondition : public IfcGroup {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCondition (IfcEntityInstanceData* e);
    IfcCondition (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcCondition > list;
};

class IFC_PARSE_API IfcConditionCriterion : public IfcControl {
public:
    ::Ifc2x3::IfcConditionCriterionSelect* Criterion() const;
    void setCriterion(::Ifc2x3::IfcConditionCriterionSelect* v);
    ::Ifc2x3::IfcDateTimeSelect* CriterionDateTime() const;
    void setCriterionDateTime(::Ifc2x3::IfcDateTimeSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConditionCriterion (IfcEntityInstanceData* e);
    IfcConditionCriterion (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcConditionCriterionSelect* v6_Criterion, ::Ifc2x3::IfcDateTimeSelect* v7_CriterionDateTime);
    typedef IfcTemplatedEntityList< IfcConditionCriterion > list;
};
class IFC_PARSE_API IfcConstructionEquipmentResource : public IfcConstructionResource {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionEquipmentResource (IfcEntityInstanceData* e);
    IfcConstructionEquipmentResource (std::string v1_GlobalId, ::Ifc2x3::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< ::Ifc2x3::IfcResourceConsumptionEnum::Value > v8_ResourceConsumption, ::Ifc2x3::IfcMeasureWithUnit* v9_BaseQuantity);
    typedef IfcTemplatedEntityList< IfcConstructionEquipmentResource > list;
};
class IFC_PARSE_API IfcConstructionMaterialResource : public IfcConstructionResource {
public:
    bool hasSuppliers() const;
    IfcEntityList::ptr Suppliers() const;
    void setSuppliers(IfcEntityList::ptr v);
    bool hasUsageRatio() const;
    double UsageRatio() const;
    void setUsageRatio(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionMaterialResource (IfcEntityInstanceData* e);
    IfcConstructionMaterialResource (std::string v1_GlobalId, ::Ifc2x3::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< ::Ifc2x3::IfcResourceConsumptionEnum::Value > v8_ResourceConsumption, ::Ifc2x3::IfcMeasureWithUnit* v9_BaseQuantity, boost::optional< IfcEntityList::ptr > v10_Suppliers, boost::optional< double > v11_UsageRatio);
    typedef IfcTemplatedEntityList< IfcConstructionMaterialResource > list;
};
class IFC_PARSE_API IfcConstructionProductResource : public IfcConstructionResource {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionProductResource (IfcEntityInstanceData* e);
    IfcConstructionProductResource (std::string v1_GlobalId, ::Ifc2x3::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< ::Ifc2x3::IfcResourceConsumptionEnum::Value > v8_ResourceConsumption, ::Ifc2x3::IfcMeasureWithUnit* v9_BaseQuantity);
    typedef IfcTemplatedEntityList< IfcConstructionProductResource > list;
};
class IFC_PARSE_API IfcCooledBeamType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcCooledBeamTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCooledBeamTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCooledBeamType (IfcEntityInstanceData* e);
    IfcCooledBeamType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcCooledBeamTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCooledBeamType > list;
};
class IFC_PARSE_API IfcCoolingTowerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcCoolingTowerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCoolingTowerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCoolingTowerType (IfcEntityInstanceData* e);
    IfcCoolingTowerType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcCoolingTowerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCoolingTowerType > list;
};
class IFC_PARSE_API IfcCovering : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc2x3::IfcCoveringTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcCoveringTypeEnum::Value v);
        IfcTemplatedEntityList< IfcRelCoversSpaces >::ptr CoversSpaces() const; // INVERSE IfcRelCoversSpaces::RelatedCoverings
    IfcTemplatedEntityList< IfcRelCoversBldgElements >::ptr Covers() const; // INVERSE IfcRelCoversBldgElements::RelatedCoverings
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCovering (IfcEntityInstanceData* e);
    IfcCovering (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc2x3::IfcCoveringTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCovering > list;
};
class IFC_PARSE_API IfcCurtainWall : public IfcBuildingElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurtainWall (IfcEntityInstanceData* e);
    IfcCurtainWall (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcCurtainWall > list;
};
class IFC_PARSE_API IfcDamperType : public IfcFlowControllerType {
public:
    ::Ifc2x3::IfcDamperTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcDamperTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDamperType (IfcEntityInstanceData* e);
    IfcDamperType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcDamperTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDamperType > list;
};

class IFC_PARSE_API IfcDiameterDimension : public IfcDimensionCurveDirectedCallout {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDiameterDimension (IfcEntityInstanceData* e);
    IfcDiameterDimension (IfcEntityList::ptr v1_Contents);
    typedef IfcTemplatedEntityList< IfcDiameterDimension > list;
};
class IFC_PARSE_API IfcDiscreteAccessory : public IfcElementComponent {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDiscreteAccessory (IfcEntityInstanceData* e);
    IfcDiscreteAccessory (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcDiscreteAccessory > list;
};
class IFC_PARSE_API IfcDiscreteAccessoryType : public IfcElementComponentType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDiscreteAccessoryType (IfcEntityInstanceData* e);
    IfcDiscreteAccessoryType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcDiscreteAccessoryType > list;
};
class IFC_PARSE_API IfcDistributionChamberElementType : public IfcDistributionFlowElementType {
public:
    ::Ifc2x3::IfcDistributionChamberElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcDistributionChamberElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionChamberElementType (IfcEntityInstanceData* e);
    IfcDistributionChamberElementType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcDistributionChamberElementTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDistributionChamberElementType > list;
};
class IFC_PARSE_API IfcDistributionControlElementType : public IfcDistributionElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionControlElementType (IfcEntityInstanceData* e);
    IfcDistributionControlElementType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcDistributionControlElementType > list;
};
class IFC_PARSE_API IfcDistributionElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionElement (IfcEntityInstanceData* e);
    IfcDistributionElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcDistributionElement > list;
};
class IFC_PARSE_API IfcDistributionFlowElement : public IfcDistributionElement {
public:
        IfcTemplatedEntityList< IfcRelFlowControlElements >::ptr HasControlElements() const; // INVERSE IfcRelFlowControlElements::RelatingFlowElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionFlowElement (IfcEntityInstanceData* e);
    IfcDistributionFlowElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcDistributionFlowElement > list;
};
class IFC_PARSE_API IfcDistributionPort : public IfcPort {
public:
    bool hasFlowDirection() const;
    ::Ifc2x3::IfcFlowDirectionEnum::Value FlowDirection() const;
    void setFlowDirection(::Ifc2x3::IfcFlowDirectionEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionPort (IfcEntityInstanceData* e);
    IfcDistributionPort (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc2x3::IfcFlowDirectionEnum::Value > v8_FlowDirection);
    typedef IfcTemplatedEntityList< IfcDistributionPort > list;
};
class IFC_PARSE_API IfcDoor : public IfcBuildingElement {
public:
    bool hasOverallHeight() const;
    double OverallHeight() const;
    void setOverallHeight(double v);
    bool hasOverallWidth() const;
    double OverallWidth() const;
    void setOverallWidth(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDoor (IfcEntityInstanceData* e);
    IfcDoor (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth);
    typedef IfcTemplatedEntityList< IfcDoor > list;
};
class IFC_PARSE_API IfcDuctFittingType : public IfcFlowFittingType {
public:
    ::Ifc2x3::IfcDuctFittingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcDuctFittingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDuctFittingType (IfcEntityInstanceData* e);
    IfcDuctFittingType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcDuctFittingTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDuctFittingType > list;
};
class IFC_PARSE_API IfcDuctSegmentType : public IfcFlowSegmentType {
public:
    ::Ifc2x3::IfcDuctSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcDuctSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDuctSegmentType (IfcEntityInstanceData* e);
    IfcDuctSegmentType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcDuctSegmentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDuctSegmentType > list;
};
class IFC_PARSE_API IfcDuctSilencerType : public IfcFlowTreatmentDeviceType {
public:
    ::Ifc2x3::IfcDuctSilencerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcDuctSilencerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDuctSilencerType (IfcEntityInstanceData* e);
    IfcDuctSilencerType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcDuctSilencerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDuctSilencerType > list;
};

class IFC_PARSE_API IfcEdgeFeature : public IfcFeatureElementSubtraction {
public:
    bool hasFeatureLength() const;
    double FeatureLength() const;
    void setFeatureLength(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEdgeFeature (IfcEntityInstanceData* e);
    IfcEdgeFeature (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_FeatureLength);
    typedef IfcTemplatedEntityList< IfcEdgeFeature > list;
};
class IFC_PARSE_API IfcElectricApplianceType : public IfcFlowTerminalType {
public:
    ::Ifc2x3::IfcElectricApplianceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcElectricApplianceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricApplianceType (IfcEntityInstanceData* e);
    IfcElectricApplianceType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcElectricApplianceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricApplianceType > list;
};
class IFC_PARSE_API IfcElectricFlowStorageDeviceType : public IfcFlowStorageDeviceType {
public:
    ::Ifc2x3::IfcElectricFlowStorageDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcElectricFlowStorageDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricFlowStorageDeviceType (IfcEntityInstanceData* e);
    IfcElectricFlowStorageDeviceType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcElectricFlowStorageDeviceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricFlowStorageDeviceType > list;
};
class IFC_PARSE_API IfcElectricGeneratorType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcElectricGeneratorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcElectricGeneratorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricGeneratorType (IfcEntityInstanceData* e);
    IfcElectricGeneratorType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcElectricGeneratorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricGeneratorType > list;
};

class IFC_PARSE_API IfcElectricHeaterType : public IfcFlowTerminalType {
public:
    ::Ifc2x3::IfcElectricHeaterTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcElectricHeaterTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricHeaterType (IfcEntityInstanceData* e);
    IfcElectricHeaterType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcElectricHeaterTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricHeaterType > list;
};
class IFC_PARSE_API IfcElectricMotorType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc2x3::IfcElectricMotorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcElectricMotorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricMotorType (IfcEntityInstanceData* e);
    IfcElectricMotorType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcElectricMotorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricMotorType > list;
};
class IFC_PARSE_API IfcElectricTimeControlType : public IfcFlowControllerType {
public:
    ::Ifc2x3::IfcElectricTimeControlTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcElectricTimeControlTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricTimeControlType (IfcEntityInstanceData* e);
    IfcElectricTimeControlType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcElectricTimeControlTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricTimeControlType > list;
};

class IFC_PARSE_API IfcElectricalCircuit : public IfcSystem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricalCircuit (IfcEntityInstanceData* e);
    IfcElectricalCircuit (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcElectricalCircuit > list;
};

class IFC_PARSE_API IfcElectricalElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricalElement (IfcEntityInstanceData* e);
    IfcElectricalElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcElectricalElement > list;
};
class IFC_PARSE_API IfcEnergyConversionDevice : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEnergyConversionDevice (IfcEntityInstanceData* e);
    IfcEnergyConversionDevice (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcEnergyConversionDevice > list;
};
class IFC_PARSE_API IfcFanType : public IfcFlowMovingDeviceType {
public:
    ::Ifc2x3::IfcFanTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcFanTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFanType (IfcEntityInstanceData* e);
    IfcFanType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcFanTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFanType > list;
};
class IFC_PARSE_API IfcFilterType : public IfcFlowTreatmentDeviceType {
public:
    ::Ifc2x3::IfcFilterTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcFilterTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFilterType (IfcEntityInstanceData* e);
    IfcFilterType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcFilterTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFilterType > list;
};
class IFC_PARSE_API IfcFireSuppressionTerminalType : public IfcFlowTerminalType {
public:
    ::Ifc2x3::IfcFireSuppressionTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcFireSuppressionTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFireSuppressionTerminalType (IfcEntityInstanceData* e);
    IfcFireSuppressionTerminalType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcFireSuppressionTerminalTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFireSuppressionTerminalType > list;
};
class IFC_PARSE_API IfcFlowController : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowController (IfcEntityInstanceData* e);
    IfcFlowController (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowController > list;
};
class IFC_PARSE_API IfcFlowFitting : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowFitting (IfcEntityInstanceData* e);
    IfcFlowFitting (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowFitting > list;
};
class IFC_PARSE_API IfcFlowInstrumentType : public IfcDistributionControlElementType {
public:
    ::Ifc2x3::IfcFlowInstrumentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcFlowInstrumentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowInstrumentType (IfcEntityInstanceData* e);
    IfcFlowInstrumentType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcFlowInstrumentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFlowInstrumentType > list;
};
class IFC_PARSE_API IfcFlowMovingDevice : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowMovingDevice (IfcEntityInstanceData* e);
    IfcFlowMovingDevice (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowMovingDevice > list;
};
class IFC_PARSE_API IfcFlowSegment : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowSegment (IfcEntityInstanceData* e);
    IfcFlowSegment (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowSegment > list;
};
class IFC_PARSE_API IfcFlowStorageDevice : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowStorageDevice (IfcEntityInstanceData* e);
    IfcFlowStorageDevice (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowStorageDevice > list;
};
class IFC_PARSE_API IfcFlowTerminal : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowTerminal (IfcEntityInstanceData* e);
    IfcFlowTerminal (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowTerminal > list;
};
class IFC_PARSE_API IfcFlowTreatmentDevice : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowTreatmentDevice (IfcEntityInstanceData* e);
    IfcFlowTreatmentDevice (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowTreatmentDevice > list;
};
class IFC_PARSE_API IfcFooting : public IfcBuildingElement {
public:
    ::Ifc2x3::IfcFootingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcFootingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFooting (IfcEntityInstanceData* e);
    IfcFooting (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, ::Ifc2x3::IfcFootingTypeEnum::Value v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFooting > list;
};
class IFC_PARSE_API IfcMember : public IfcBuildingElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMember (IfcEntityInstanceData* e);
    IfcMember (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcMember > list;
};
class IFC_PARSE_API IfcPile : public IfcBuildingElement {
public:
    ::Ifc2x3::IfcPileTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcPileTypeEnum::Value v);
    bool hasConstructionType() const;
    ::Ifc2x3::IfcPileConstructionEnum::Value ConstructionType() const;
    void setConstructionType(::Ifc2x3::IfcPileConstructionEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPile (IfcEntityInstanceData* e);
    IfcPile (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, ::Ifc2x3::IfcPileTypeEnum::Value v9_PredefinedType, boost::optional< ::Ifc2x3::IfcPileConstructionEnum::Value > v10_ConstructionType);
    typedef IfcTemplatedEntityList< IfcPile > list;
};
class IFC_PARSE_API IfcPlate : public IfcBuildingElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlate (IfcEntityInstanceData* e);
    IfcPlate (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcPlate > list;
};
class IFC_PARSE_API IfcRailing : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc2x3::IfcRailingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcRailingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRailing (IfcEntityInstanceData* e);
    IfcRailing (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc2x3::IfcRailingTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcRailing > list;
};
class IFC_PARSE_API IfcRamp : public IfcBuildingElement {
public:
    ::Ifc2x3::IfcRampTypeEnum::Value ShapeType() const;
    void setShapeType(::Ifc2x3::IfcRampTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRamp (IfcEntityInstanceData* e);
    IfcRamp (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, ::Ifc2x3::IfcRampTypeEnum::Value v9_ShapeType);
    typedef IfcTemplatedEntityList< IfcRamp > list;
};
class IFC_PARSE_API IfcRampFlight : public IfcBuildingElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRampFlight (IfcEntityInstanceData* e);
    IfcRampFlight (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcRampFlight > list;
};

class IFC_PARSE_API IfcRationalBezierCurve : public IfcBezierCurve {
public:
    std::vector< double > /*[2:?]*/ WeightsData() const;
    void setWeightsData(std::vector< double > /*[2:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRationalBezierCurve (IfcEntityInstanceData* e);
    IfcRationalBezierCurve (int v1_Degree, IfcTemplatedEntityList< ::Ifc2x3::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc2x3::IfcBSplineCurveForm::Value v3_CurveForm, bool v4_ClosedCurve, bool v5_SelfIntersect, std::vector< double > /*[2:?]*/ v6_WeightsData);
    typedef IfcTemplatedEntityList< IfcRationalBezierCurve > list;
};
class IFC_PARSE_API IfcReinforcingElement : public IfcBuildingElementComponent {
public:
    bool hasSteelGrade() const;
    std::string SteelGrade() const;
    void setSteelGrade(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcingElement (IfcEntityInstanceData* e);
    IfcReinforcingElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade);
    typedef IfcTemplatedEntityList< IfcReinforcingElement > list;
};
class IFC_PARSE_API IfcReinforcingMesh : public IfcReinforcingElement {
public:
    bool hasMeshLength() const;
    double MeshLength() const;
    void setMeshLength(double v);
    bool hasMeshWidth() const;
    double MeshWidth() const;
    void setMeshWidth(double v);
    double LongitudinalBarNominalDiameter() const;
    void setLongitudinalBarNominalDiameter(double v);
    double TransverseBarNominalDiameter() const;
    void setTransverseBarNominalDiameter(double v);
    double LongitudinalBarCrossSectionArea() const;
    void setLongitudinalBarCrossSectionArea(double v);
    double TransverseBarCrossSectionArea() const;
    void setTransverseBarCrossSectionArea(double v);
    double LongitudinalBarSpacing() const;
    void setLongitudinalBarSpacing(double v);
    double TransverseBarSpacing() const;
    void setTransverseBarSpacing(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcingMesh (IfcEntityInstanceData* e);
    IfcReinforcingMesh (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcReinforcingMesh > list;
};
class IFC_PARSE_API IfcRoof : public IfcBuildingElement {
public:
    ::Ifc2x3::IfcRoofTypeEnum::Value ShapeType() const;
    void setShapeType(::Ifc2x3::IfcRoofTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRoof (IfcEntityInstanceData* e);
    IfcRoof (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, ::Ifc2x3::IfcRoofTypeEnum::Value v9_ShapeType);
    typedef IfcTemplatedEntityList< IfcRoof > list;
};

class IFC_PARSE_API IfcRoundedEdgeFeature : public IfcEdgeFeature {
public:
    bool hasRadius() const;
    double Radius() const;
    void setRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRoundedEdgeFeature (IfcEntityInstanceData* e);
    IfcRoundedEdgeFeature (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_FeatureLength, boost::optional< double > v10_Radius);
    typedef IfcTemplatedEntityList< IfcRoundedEdgeFeature > list;
};
class IFC_PARSE_API IfcSensorType : public IfcDistributionControlElementType {
public:
    ::Ifc2x3::IfcSensorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcSensorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSensorType (IfcEntityInstanceData* e);
    IfcSensorType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcSensorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSensorType > list;
};
class IFC_PARSE_API IfcSlab : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc2x3::IfcSlabTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcSlabTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSlab (IfcEntityInstanceData* e);
    IfcSlab (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc2x3::IfcSlabTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSlab > list;
};
class IFC_PARSE_API IfcStair : public IfcBuildingElement {
public:
    ::Ifc2x3::IfcStairTypeEnum::Value ShapeType() const;
    void setShapeType(::Ifc2x3::IfcStairTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStair (IfcEntityInstanceData* e);
    IfcStair (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, ::Ifc2x3::IfcStairTypeEnum::Value v9_ShapeType);
    typedef IfcTemplatedEntityList< IfcStair > list;
};
class IFC_PARSE_API IfcStairFlight : public IfcBuildingElement {
public:
    bool hasNumberOfRiser() const;
    int NumberOfRiser() const;
    void setNumberOfRiser(int v);
    bool hasNumberOfTreads() const;
    int NumberOfTreads() const;
    void setNumberOfTreads(int v);
    bool hasRiserHeight() const;
    double RiserHeight() const;
    void setRiserHeight(double v);
    bool hasTreadLength() const;
    double TreadLength() const;
    void setTreadLength(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStairFlight (IfcEntityInstanceData* e);
    IfcStairFlight (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::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);
    typedef IfcTemplatedEntityList< IfcStairFlight > list;
};
class IFC_PARSE_API IfcStructuralAnalysisModel : public IfcSystem {
public:
    ::Ifc2x3::IfcAnalysisModelTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcAnalysisModelTypeEnum::Value v);
    bool hasOrientationOf2DPlane() const;
    ::Ifc2x3::IfcAxis2Placement3D* OrientationOf2DPlane() const;
    void setOrientationOf2DPlane(::Ifc2x3::IfcAxis2Placement3D* v);
    bool hasLoadedBy() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralLoadGroup >::ptr LoadedBy() const;
    void setLoadedBy(IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralLoadGroup >::ptr v);
    bool hasHasResults() const;
    IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralResultGroup >::ptr HasResults() const;
    void setHasResults(IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralResultGroup >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralAnalysisModel (IfcEntityInstanceData* e);
    IfcStructuralAnalysisModel (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcAnalysisModelTypeEnum::Value v6_PredefinedType, ::Ifc2x3::IfcAxis2Placement3D* v7_OrientationOf2DPlane, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralLoadGroup >::ptr > v8_LoadedBy, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcStructuralResultGroup >::ptr > v9_HasResults);
    typedef IfcTemplatedEntityList< IfcStructuralAnalysisModel > list;
};

class IFC_PARSE_API IfcTendon : public IfcReinforcingElement {
public:
    ::Ifc2x3::IfcTendonTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcTendonTypeEnum::Value v);
    double NominalDiameter() const;
    void setNominalDiameter(double v);
    double CrossSectionArea() const;
    void setCrossSectionArea(double v);
    bool hasTensionForce() const;
    double TensionForce() const;
    void setTensionForce(double v);
    bool hasPreStress() const;
    double PreStress() const;
    void setPreStress(double v);
    bool hasFrictionCoefficient() const;
    double FrictionCoefficient() const;
    void setFrictionCoefficient(double v);
    bool hasAnchorageSlip() const;
    double AnchorageSlip() const;
    void setAnchorageSlip(double v);
    bool hasMinCurvatureRadius() const;
    double MinCurvatureRadius() const;
    void setMinCurvatureRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTendon (IfcEntityInstanceData* e);
    IfcTendon (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, ::Ifc2x3::IfcTendonTypeEnum::Value 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);
    typedef IfcTemplatedEntityList< IfcTendon > list;
};

class IFC_PARSE_API IfcTendonAnchor : public IfcReinforcingElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTendonAnchor (IfcEntityInstanceData* e);
    IfcTendonAnchor (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade);
    typedef IfcTemplatedEntityList< IfcTendonAnchor > list;
};
class IFC_PARSE_API IfcVibrationIsolatorType : public IfcDiscreteAccessoryType {
public:
    ::Ifc2x3::IfcVibrationIsolatorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcVibrationIsolatorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVibrationIsolatorType (IfcEntityInstanceData* e);
    IfcVibrationIsolatorType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcVibrationIsolatorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcVibrationIsolatorType > list;
};
class IFC_PARSE_API IfcWall : public IfcBuildingElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWall (IfcEntityInstanceData* e);
    IfcWall (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcWall > list;
};
class IFC_PARSE_API IfcWallStandardCase : public IfcWall {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWallStandardCase (IfcEntityInstanceData* e);
    IfcWallStandardCase (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcWallStandardCase > list;
};
class IFC_PARSE_API IfcWindow : public IfcBuildingElement {
public:
    bool hasOverallHeight() const;
    double OverallHeight() const;
    void setOverallHeight(double v);
    bool hasOverallWidth() const;
    double OverallWidth() const;
    void setOverallWidth(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWindow (IfcEntityInstanceData* e);
    IfcWindow (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth);
    typedef IfcTemplatedEntityList< IfcWindow > list;
};
class IFC_PARSE_API IfcActuatorType : public IfcDistributionControlElementType {
public:
    ::Ifc2x3::IfcActuatorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcActuatorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcActuatorType (IfcEntityInstanceData* e);
    IfcActuatorType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcActuatorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcActuatorType > list;
};
class IFC_PARSE_API IfcAlarmType : public IfcDistributionControlElementType {
public:
    ::Ifc2x3::IfcAlarmTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcAlarmTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAlarmType (IfcEntityInstanceData* e);
    IfcAlarmType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcAlarmTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAlarmType > list;
};
class IFC_PARSE_API IfcBeam : public IfcBuildingElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBeam (IfcEntityInstanceData* e);
    IfcBeam (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcBeam > list;
};

class IFC_PARSE_API IfcChamferEdgeFeature : public IfcEdgeFeature {
public:
    bool hasWidth() const;
    double Width() const;
    void setWidth(double v);
    bool hasHeight() const;
    double Height() const;
    void setHeight(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcChamferEdgeFeature (IfcEntityInstanceData* e);
    IfcChamferEdgeFeature (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_FeatureLength, boost::optional< double > v10_Width, boost::optional< double > v11_Height);
    typedef IfcTemplatedEntityList< IfcChamferEdgeFeature > list;
};
class IFC_PARSE_API IfcControllerType : public IfcDistributionControlElementType {
public:
    ::Ifc2x3::IfcControllerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc2x3::IfcControllerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcControllerType (IfcEntityInstanceData* e);
    IfcControllerType (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc2x3::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc2x3::IfcControllerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcControllerType > list;
};
class IFC_PARSE_API IfcDistributionChamberElement : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionChamberElement (IfcEntityInstanceData* e);
    IfcDistributionChamberElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcDistributionChamberElement > list;
};
class IFC_PARSE_API IfcDistributionControlElement : public IfcDistributionElement {
public:
    bool hasControlElementId() const;
    std::string ControlElementId() const;
    void setControlElementId(std::string v);
        IfcTemplatedEntityList< IfcRelFlowControlElements >::ptr AssignedToFlowElement() const; // INVERSE IfcRelFlowControlElements::RelatedControlElements
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionControlElement (IfcEntityInstanceData* e);
    IfcDistributionControlElement (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ControlElementId);
    typedef IfcTemplatedEntityList< IfcDistributionControlElement > list;
};

class IFC_PARSE_API IfcElectricDistributionPoint : public IfcFlowController {
public:
    ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::Value DistributionPointFunction() const;
    void setDistributionPointFunction(::Ifc2x3::IfcElectricDistributionPointFunctionEnum::Value v);
    bool hasUserDefinedFunction() const;
    std::string UserDefinedFunction() const;
    void setUserDefinedFunction(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricDistributionPoint (IfcEntityInstanceData* e);
    IfcElectricDistributionPoint (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::Value v9_DistributionPointFunction, boost::optional< std::string > v10_UserDefinedFunction);
    typedef IfcTemplatedEntityList< IfcElectricDistributionPoint > list;
};
class IFC_PARSE_API IfcReinforcingBar : public IfcReinforcingElement {
public:
    double NominalDiameter() const;
    void setNominalDiameter(double v);
    double CrossSectionArea() const;
    void setCrossSectionArea(double v);
    bool hasBarLength() const;
    double BarLength() const;
    void setBarLength(double v);
    ::Ifc2x3::IfcReinforcingBarRoleEnum::Value BarRole() const;
    void setBarRole(::Ifc2x3::IfcReinforcingBarRoleEnum::Value v);
    bool hasBarSurface() const;
    ::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value BarSurface() const;
    void setBarSurface(::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcingBar (IfcEntityInstanceData* e);
    IfcReinforcingBar (std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc2x3::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc2x3::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, ::Ifc2x3::IfcReinforcingBarRoleEnum::Value v13_BarRole, boost::optional< ::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface);
    typedef IfcTemplatedEntityList< IfcReinforcingBar > list;
};

};

#endif